Как добавить дополнительный исходный каталог для maven для компиляции и включения в сборочный jar?
В дополнение к src/main/java я добавляю каталог src/bootstrap, который я хочу включить в процесс сборки, другими словами, я хочу, чтобы maven скомпилировал и включил исходники в мою сборку. Как!?
6 ответов
Вы можете использовать плагин Build Helper, например:
<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>
Обновите свой pom.xml
как -
<project>
....
<build>
<resources>
<resource>
<directory>src/main/config</directory>
</resource>
</resources>
...
</build>
...
</project>
http://maven.apache.org/guides/mini/guide-using-one-source-directory.html
<build>
<sourceDirectory>../src/main/java</sourceDirectory>
также см
Чтобы пометить папку как сгенерированные источники и получить ее с помощью IntelliJ, используйте следующее:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<generatedSourcesDirectory>src/main/generated</generatedSourcesDirectory>
</configuration>
</plugin>
Я потратил час на поиски того, как избежать возврата IntelliJ после того, как я вручную пометил target/generated-sources как папку сгенерированных источников. Плагин codehaus.mojo не работал. Но это решение помогло!
Вы можете добавить каталоги для вашего процесса сборки, например:
...
<resources>
<resource>
<directory>src/bootstrap</directory>
</resource>
</resources>
...
Src/main/java - это путь по умолчанию, который не требуется упоминать в pom.xml.
В последних версиях Maven (3) и последней версии плагина компилятора maven (3.7.0) я заметил, что добавление исходной папки с build-helper-maven-plugin
не требуется, если папка, содержащая исходный код для добавления в сборку, находится в target
папка или подпапка этого.
Кажется, что плагин компилятора maven компилирует любой исходный код Java, расположенный внутри этой папки, независимо от каталога, в котором они находятся.
Например, иметь некоторый (сгенерированный или нет) исходный код в target/a
, target/generated-source/foo
будет скомпилирован и добавлен в outputDirectory: target/classes
,