如何为测试包含排除的源文件?

时间:2015-06-25 12:58:46

标签: maven-3 maven-compiler-plugin

我有一个初始数据类,应该在普通(默认配置文件)版本中排除。如果我指定运行配置文件,则应包含此类。 此外,测试还需要这个类。所以它需要包括所有时间。

我使用排除来实现第一部分,但是测试的依赖性破坏了 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>

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

1 个答案:

答案 0 :(得分:0)

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

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

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

src/main/java

测试代码进入:

src/test/java

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

此外,如果你这样做,你不需要搞乱编译器插件设置。默认值将达到预期效果。

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