0

我正在尝试将现有项目转换为 Maven 项目。它有 3 个模块,其中一个模块有多个源文件夹。 http://i.imgur.com/jZCnR.png

maven clean and install 或 eclipse clean 不会在 classes 和 test-classes 文件夹中创建类文件。项目结构是由那里没有类文件创建的。

以下插件配置在父 pom.xml 中定义。

<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>

我究竟做错了什么?

4

3 回答 3

3

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

您还使用了“生成测试源”阶段。这似乎不起作用尝试“生成源”。

于 2013-03-05T10:17:53.433 回答
1

根据Using MOJO build-helper-maven-plugin to add more source folder to MAVEN你不应该通过包含标签再次定义额外的源目录;只在build-helper-maven-plugin中定义它们,就是这样。

您也可以尝试将add-source目标与早期的 Maven 阶段相关联,例如initialize。一般来说,越早越好。

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

就我而言,我的错误是将其绑定到编译阶段。尽管我的build-helper-maven-plugin是在pom.xml中的maven-compile-plugin之前定义的,但不知何故,默认编译任务首先启动并默默地忽略了我额外的源目录,从而导致构建过程中出现一些意外错误。绑定到同一阶段的步骤顺序应遵循 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.

小窍门:在你的代码中故意犯错,只是为了检查编译器是否真的通过了你的额外目录。如果编译没有立即失败,那么问题不在于不生成类文件,而在于编译器配置。您可以排除增量构建问题或类似的更深奥的问题。

于 2013-12-19T02:57:17.953 回答
0

build helper maven plugin的目标所述,您应该在标签中指定一个目录。add-source<source>

于 2012-12-04T11:26:18.890 回答