我有一个初始数据类,它应该在正常(默认配置文件)构建中排除。例如,如果我指定了运行配置文件,则应包括此类。此外,这个类是测试所需要的。因此,它需要始终包含在内。
我使用排除来实现第一部分,但测试的依赖性打破了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>
依赖项引用,另一个作为生产依赖项引用。