maven 3-如何为测试包含一个排除的源文件



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

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

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

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

关于如何布局项目的详细信息,请参见以下内容:https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html

基本上,你把你的生产代码放在:

src/main/java

测试代码进入:

src/test/java

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

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

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

最新更新