我正在尝试将现有项目转换为maven项目。它有3个模块,其中一个模块有多个源文件夹。 http://i.imgur.com/jZCnR.png
maven clean and install或eclipse clean不会在classes和test-classes文件夹中创建类文件。项目结构是由那里没有类文件创建的。
以下插件配置在父pom中定义。
<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>src/main/java/**/*.*</source>
<source>src/report/java/**/*.*</source>
<source>src/architect/java/**/*.*</source>
</sources>
</configuration>
</execution>
<execution>
<id>add-test-source</id>
<phase>generate-test-sources</phase>
<goals><goal>add-test-source</goal></goals>
<configuration>
<sources>
<source>src/test/java/**/*.*</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<debug>false</debug>
</configuration>
<executions>
<execution>
<id>default-compile</id>
<phase>compile</phase>
<goals><goal>compile</goal></goals>
<configuration>
<includes>
<include>src/main/java/**/*.*</include>
<include>src/report/java/**/*.*</include>
<include>src/architect/java/**/*.*</include>
</includes>
</configuration>
</execution>
<execution>
<id>default-testCompile</id>
<phase>test-compile</phase>
<goals><goal>testCompile</goal></goals>
<configuration>
<testIncludes>
<include>src/test/java/**/*.*</include>
</testIncludes>
</configuration>
</execution>
</executions>
</plugin>
我做错了什么?
答案 0 :(得分:3)
对我来说,eclipse中的mvn插件也没有生成正确的结构。 尝试在cmd中运行mvn eclipse:eclipse。这样做对我来说。
您还使用了阶段'generate-test-sources'。这似乎不起作用'generate-sources'。
答案 1 :(得分:1)
根据Using MOJO build-helper-maven-plugin to add more source folders to MAVEN,你应该不通过includes标记定义其他源目录再次;在 build-helper-maven-plugin 中定义它们就是这样。
此外,您可以尝试将 add-source 目标与早期的Maven阶段相关联,例如 initialize 。一般来说,越早越好。
<phase>initialize</phase>
<goals>
<goal>add-source</goal>
</goals>
在我的情况下,我的错误是将它绑定到编译阶段。尽管我在 pom.xml 中的 maven-compile-plugin 之前定义了 build-helper-maven-plugin ,但不知何故 default-编译任务一开始就默默地忽略了我的额外源目录,导致构建中的一些意外错误。绑定到同一阶段的步骤顺序应遵循pom.xml中的出现顺序,但是,并非总是如此。
检查您是否在日志中看到了:
[INFO] --- build-helper-maven-plugin:1.8:add-source (add-gen-source) @ deepclone-sample-project-1 ---
[INFO] Source directory: E:\dev\workspace...\src\main\generated added.
方便的技巧:在代码中产生故意的错误,只是为了检查编译器是否真的通过了额外的目录。如果编译没有立即失败,那么问题不是关于不生成类文件文件,而是关于编译器配置。您可以排除增量构建问题或类似的更深奥的问题。
答案 2 :(得分:0)
作为documented的add-source
目标中的build helper maven plugin,您应在<source>
代码中指定目录。