2012-12-04 42 views
0

我想将现有项目转换为Maven项目。它有3个模块,其中一个模块有多个源文件夹。 http://i.imgur.com/jZCnR.pngMaven编译器插件,构建助手插件不会生成类文件

maven clean and install或eclipse clean不会在类和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> 

我在做什么错?

+1

为什么添加与src/main/java或src/test/java不同的位置?这真的有必要吗? – khmarbaise

+0

因为在这个遗留项目中有多个源文件夹,并且它们之间存在双向依赖关系。如果我做了一个特定的来源,比如说。在这种情况下,“报告”src文件夹,作为一个单独的maven模块,那么我不知道如何解决这种双向依赖。 – blaks

+0

根据您提供的信息,您需要将多个源文件夹分隔为不同的模块。 – khmarbaise

回答

0

正如build helper maven pluginadd-source目标documented,你应该在<source>标签指定目录

+0

谢谢,我解决了这个问题。所以现在我所有的资源都正确地被复制到类和测试类文件夹中。但我仍然没有任何类文件。 – blaks

3

对我来说,Eclipse中的mvn插件也不会生成正确的结构。 尝试在cmd中运行mvn eclipse:eclipse。那为我做了。

此外,您还使用了'generate-test-sources'阶段。这似乎不工作尝试'生成源'。

+0

如果有人知道为什么generate-test-sources不起作用。在评论中添加它。 – mahieus

+0

简而言之,您需要在'maven-eclipse-plugin'执行之前执行'generate-test-sources'目标,以便运行'mvn generate-test-sources eclipse:eclipse'。 我有一个在这里回答更详细的回答:http://stackoverflow.com/a/20463195/1410035 –

1

根据Using MOJO build-helper-maven-plugin to add more source folders to MAVEN你应该定义额外的源目录再次通过包括标签;只需在build-helper-maven-plugin中定义它们即可。

你也可以尝试目标与早期的Maven相相关附加源,如初始化。一般来说,越早越好。

<phase>initialize</phase> 
<goals> 
    <goal>add-source</goal> 
</goals> 

就我而言,我的错误是将其绑定到编译阶段。尽管我集结帮手 - Maven的插件定义之前Maven的编译插件的pom.xml,不知何故默认编译任务第一脚踢和悄悄地忽略我造成了一些意外的错误额外的源目录进一步下降建设。绑定到同一阶段的步骤顺序应遵循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. 

方便的技巧:请在您的代码是故意的错误,只是检查的编译器真的去通过你额外的目录。如果编译没有立即失败,那么问题不在于不生成类文件文件,而是关于编译器配置。您可以排除增量构建问题或类似的更深奥的问题。

+0

你是一个救星,谢谢你! –