0

我有一个初始数据类,应该在正常(默认配置文件)构建中排除。如果我指定例如运行配置文件,则应包含此类。此外,测试需要这个类。所以它需要一直包含在内。

我使用排除项来实现第一部分,但是来自测试的依赖关系破坏了testCompile目标。

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <executions>
        <execution>
            <id>default-compile</id>
            <goals>
                <goal>compile</goal>
            </goals>
            <configuration>
                <excludes>
                    <exclude>**/InitialDataBuilder.java</exclude>
                </excludes>
            </configuration>
        </execution>
        <execution>
            <id>default-testCompile</id>
            <goals>
                <goal>testCompile</goal>
            </goals>
            <configuration>
                <testIncludes>
                    <include>**/*.java</include>
                </testIncludes>
            </configuration>
        </execution>
    </executions>
</plugin>

我的配置有什么问题?
有没有办法为测试包含排除的源文件?

4

1 回答 1

0

Maven 的目录结构允许您轻松地分离源代码/生产代码和测试代码。

此处解释了如何布局项目的详细信息:https ://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html

基本上,您将生产代码放入:

src/main/java

测试代码进入:

src/test/java

测试代码树应该包括实际的单元测试本身和支持类。所以你描述的代码属于那里。它只会出现在测试 jar 中,而不是生产 jar。

此外,如果您这样做,您不需要弄乱编译器插件设置。默认值将满足您的期望。

哦,我应该提到的另一件事是,如果另一个配置文件需要它,您可能应该使用它自己的 POM 文件使其成为自己的 maven 模块。然后这个类可以将其作为<scope>test</scope>依赖项引用,另一个作为生产依赖项引用。

于 2015-06-27T02:18:20.177 回答