Maven编译多个src目录
有没有办法在一个单一的Maven项目中编译多个Java源代码目录?
您可以使用build-helper添加一个新的源代码目录:
<build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <executions> <execution> <phase>generate-sources</phase> <goals> <goal>add-source</goal> </goals> <configuration> <sources> <source>src/main/generated</source> </sources> </configuration> </execution> </executions> </plugin> </plugins> </build>
我天真地这样做:
<build> <finalName>osmwse</finalName> <sourceDirectory>src/main/java, src/interfaces, src/services</sourceDirectory> </build>
这对我有效
<build> <sourceDirectory>.</sourceDirectory> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <includes> <include>src/main/java/**/*.java</include> <include>src/main2/java/**/*.java</include> </includes> </configuration> </plugin> </plugins> </build>
使其工作在intelliJ,你也可以添加
<generatedSourcesDirectory>src/main/generated</generatedSourcesDirectory>
到maven-compiler-plugin
这也可以通过定义资源标签与maven协同工作。 无论你喜欢什么,你都可以命名你的src文件夹名称。
<resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.java</include> <include>**/*.properties</include> <include>**/*.xml</include> </includes> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.java</include> <include>**/*.properties</include> <include>**/*.xml</include> </includes> </resource> <resource> <directory>src/main/generated</directory> <includes> <include>**/*.java</include> <include>**/*.properties</include> <include>**/*.xml</include> </includes> </resource> </resources>
使用post-build-helper-maven-plugin并更新src / main / generated。 而mvn干净的编译工作在我的../common/src/main/java,或../common,所以保留后者。 然后是的,证实了David Phillips提到的IntelliJ IDEA(版本10.5.2)级别的编译失败。 问题是IDEA没有将另一个源代码根添加到项目中。 手动添加它解决了这个问题。 这不是很好,因为编辑项目中的任何内容都应该来自maven,而不是直接编辑IDEA的项目选项。 然而,我将能够直接支持build-helper-maven-plugin,直接自动添加源代码。
然后需要另一个解决方法,使其工作。 由于每次IDE重新导入maven设置后,我改变了我新添加的源文件保存在模块,但它丢失了它的源文件夹的select,是没用的。 所以对于IDEA – 需要设置一次:
- select – 项目设置/ Maven /导入/保持源和testing文件夹重新导入。
- 添加 – 项目结构/项目设置/模块/ {模块} /来源/添加内容根。
现在保留这些文件夹并不是世界上最好的做法,但是试试看吧。
这可以分两步完成:
- 对于每个源目录,您应该创build自己的模块。
- 在所有模块中,您应该指定相同的构build目录:$ {build.directory}
如果你开始使用jetty(jetty:run),那么任何模块(使用Maven,IDEA或Eclipse)中的任何类的重新编译将导致docker重启。 您将获得修改资源的相同行为。