В дополнение к src/main/java, я добавляю каталог src/bootstrap, который я хочу включить в мой процесс сборки, другими словами, я хочу, чтобы maven собирал и включал источники в мою сборку. Как!?
Как добавить дополнительный исходный каталог для maven для компиляции и включения в сборку jar?
Ответ 1
Вы можете использовать Плагин поддержки сборки, например:
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>some directory</source>
...
</sources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Ответ 2
ПРИМЕЧАНИЕ. Это решение просто переместит исходные файлы java в каталог target/classes и не скомпилирует исходные файлы. Обновите pom.xml
как -
<project>
....
<build>
<resources>
<resource>
<directory>src/main/config</directory>
</resource>
</resources>
...
</build>
...
</project>
Ответ 3
http://maven.apache.org/guides/mini/guide-using-one-source-directory.html
<build>
<sourceDirectory>../src/main/java</sourceDirectory>
также см.
Ответ 4
Вы можете добавить каталоги для своего процесса сборки, например:
...
<resources>
<resource>
<directory>src/bootstrap</directory>
</resource>
</resources>
...
src/main/java - это путь по умолчанию, который не требуется указывать в pom.xml
Ответ 5
В последних версиях Maven (3) и последней версии плагина компилятора maven (3.7.0) я заметил, что добавление исходной папки с помощью build-helper-maven-plugin
не требуется, если папка, содержащая исходный код для добавления в сборке находится в target
папке или ее подпапке.
Кажется, что плагин компилятора maven компилирует любой исходный код Java, расположенный внутри этой папки, независимо от каталога, в котором они находятся.
Например, имея некоторый (сгенерированный или нет) исходный код в target/a
, target/generated-source/foo
будет скомпилирован и добавлен в outputDirectory: target/classes
.