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重启。 您将获得修改资源的相同行为。