我有一个初始数据类,应该在普通(默认配置文件)版本中排除。如果我指定运行配置文件,则应包含此类。 此外,测试还需要这个类。所以它需要包括所有时间。
我使用排除来实现第一部分,但是测试的依赖性破坏了 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>
我的配置有什么问题?
是否无法为测试包含排除的源文件?
答案 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>
依赖项引用,另一个作为生产依赖项。