Компиляция только выбранных файлов в 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
, как я уже упоминал. Можете ли вы объяснить это или предложить другое решение для компиляции только выбранных файлов?
Ответы
Ответ 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>