Maven编译器插件,构建帮助器插件不会生成类文件

时间:2012-12-04 09:16:34

标签: maven maven-2 m2eclipse maven-compiler-plugin

我正在尝试将现有项目转换为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>

我做错了什么?

3 个答案:

答案 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)

作为documentedadd-source目标中的build helper maven plugin,您应在<source>代码中指定目录