Maven 2 Maven-在执行测试时将目录添加到类路径
我的项目中的Junits需要从类路径加载属性文件。如何指定这些属性文件的目录,以便Maven在运行测试之前在类路径中设置该目录?您可以使用指定其他测试资源目录,如下所示。使用以下配置,测试资源目录的内容将在生成测试源阶段复制到目标/测试类目录:Maven 2 Maven-在执行测试时将目录添加到类路径,maven-2,Maven 2,我的项目中的Junits需要从类路径加载属性文件。如何指定这些属性文件的目录,以便Maven在运行测试之前在类路径中设置该目录?您可以使用指定其他测试资源目录,如下所示。使用以下配置,测试资源目录的内容将在生成测试源阶段复制到目标/测试类目录: org.codehaus.mojo 构建助手maven插件 1.12 添加测试资源 生成测试源 添加测试资源 路径/到/附加/测试/资源 **/要排除的文件夹/** 如果您只想将属性文件放在磁盘上的某个位置,而不想在构建期间将这些属性文件复制到目标/测
org.codehaus.mojo
构建助手maven插件
1.12
添加测试资源
生成测试源
添加测试资源
路径/到/附加/测试/资源
**/要排除的文件夹/**
如果您只想将属性文件放在磁盘上的某个位置,而不想在构建期间将这些属性文件复制到目标/测试类,那么可以这样做
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<additionalClasspathElements>
<additionalClasspathElement>/add/this/to/path</additionalClasspathElement>
</additionalClasspathElements>
</configuration>
</plugin>
org.apache.maven.plugins
maven surefire插件
/将/this/添加到/path
为什么不直接使用测试/资源
并从该点开始将属性放在类路径中呢。它们只在测试阶段出现。如果您有多个资源环境,您可以使用maven概要文件,并根据您正在测试的概要文件放置各种资源
test/resources/uat
test/resources/prod
test/resources/dev
但是通常,如果您需要进行集成测试,那么您不需要构建助手maven插件。maven资源插件有一个允许您复制资源的
copy resources
目标。例如:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>additional-resources</id>
<phase>process-test-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.testOutputDirectory}</outputDirectory>
<resources>
<resource>
<directory>${project.basedir}/conf</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
org.apache.maven.plugins
maven资源插件
2.6
额外资源
过程测试资源
复制资源
${project.build.testOutputDirectory}
${project.basedir}/conf
这将把项目基础中的
conf
文件夹的内容复制到target/test classes
文件夹中(除非您修改了project.build.testOutputDirectory),该文件夹将在单元测试期间添加到类路径中。您还可以添加新的测试资源文件夹
<build>
<testResources>
<testResource>
<directory>${project.basedir}/src/test/resources</directory>
</testResource>
<testResource>
<directory>${project.basedir}/src/test/something_else</directory>
</testResource>
</testResources>
</build>
${project.basedir}/src/test/resources
${project.basedir}/src/test/something\u other
第一个路径,
src/test/resources
,是默认路径。假设您仍然希望使用默认路径,请确保包含该路径。(testResources标签覆盖默认值,因此如果您没有明确包含默认路径,它将停止使用。)一个文件夹只有一个这样的文件夹,但通常有多个测试环境。如果您有一个多模块maven项目,您可能需要一个公共测试数据,它将在多个模块的类路径上可用。不幸的是,当从Eclipse运行测试时,m2e没有选择Surefire的配置。太糟糕了,因为这比build helper maven插件的添加测试资源目标要简单一点。这在功能上并不重要,但为了有序,该阶段不应该是生成测试资源而不是生成测试源吗?您似乎在阶段有一个输入错误
s/添加测试源/添加测试资源/否则它仍然可以工作,但在语义上更正确。这对我来说很有效+感谢您指出默认设置的必要性。这正是我想要的,谢谢!比公认的buildhelpermaven插件
解决方案简单得多。对于任何正在寻找好方法的人,也可以将..
构造添加到maven配置文件中,例如,如果您想为不同的环境指定不同的资源(local/dev/test/prod)。
<build>
<testResources>
<testResource>
<directory>${project.basedir}/src/test/resources</directory>
</testResource>
<testResource>
<directory>${project.basedir}/src/test/something_else</directory>
</testResource>
</testResources>
</build>