Подтвердить что ты не робот

Компиляция только выбранных файлов в Maven

Я хочу скомпилировать только выбранные файлы или каталоги (включая подкаталоги) в исходном каталоге. Я был уверен, что смогу это сделать, используя конфигурацию <includes> of maven-compiler-plugin, но, похоже, она не работает, как я ожидаю, поскольку она все еще компилирует все классы в target/classes. Что действительно странно, выход Maven предполагает, что настройка фактически выполняет свою работу, потому что:

  <plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.5.1</version>
    <configuration>
      <includes>
        <include>com/example/dao/bean/*.java</include>
      </includes>
    </configuration>
  </plugin>

У меня есть:

[INFO] Compiling 1 source file to c:\Projects\test\target\classes

но без конфигурации компилятора у меня есть:

[INFO] Compiling 14 source file to c:\Projects\test\target\classes

В обоих случаях, однако, все 14 классов скомпилированы в target/classes, как я уже упоминал. Можете ли вы объяснить это или предложить другое решение для компиляции только выбранных файлов?

4b9b3361

Ответ 1

Простое приложение с 3 классами.

com/company/Obj1.java
com/company/Obj2.java
com/company/inner/Obj3.java  

build в pom.xml

<build>
         <plugins>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-compiler-plugin</artifactId>
               <version>2.0.2</version>
               <configuration>
                  <source>1.6</source>
                  <target>1.6</target>
                  <includes>
                     <include>com/company/inner/*.java</include>
                  </includes>
               </configuration>
            </plugin>
          </plugins>

   </build>  

результат: скомпилирован 1 класс.
И любая комбинация включений хорошо работает
или вы имеете в виду что-то еще?

Ответ 2

Мне не трудно было включить или исключить файлы для компиляции с плагином maven-компилятора 2.5.1. Здесь - это фиктивный проект, который я использовал для этой цели. Возможно, шаблон include, который вы используете, отличается.

Ответ 3

maven-compiler-plugin с использованием Ant -образного включения/исключения. Вы можете увидеть примеры в Ant документации Ant Тип FileSet

Если вы хотите включать только файлы из одного каталога, вам нужно написать его так же, как вы:

<include>com/example/dao/bean/*.java</include>

Чтобы включить также подкаталоги из пути, это будет:

<include>com/example/dao/bean/**/*.java</include>