我正在使用Maven 3.0.3和JUnit 4.8.1。在我的JUnit测试中,如何读取我的Maven pom.xml文件中定义的project.artifactId?在我的pom中,我有
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.myco.pplus2</groupId>
<artifactId>pplus2</artifactId>
但是这在我的JUnit测试中没有用来设置工件id ...
@Before
public void setUp() {
...
System.out.println( "artifactId:" + System.getProperty("project.build.sourceEncoding") );
} // setUp
以上输出“artifactId:null”。无论如何,感谢任何帮助, - 戴夫
答案 0 :(得分:10)
Maven项目属性不会自动添加到Java System属性中。要实现这一目标,有很多选择。对于这个特定需求,您可以为maven-surefire-plugin(运行测试的那个)定义一个System属性,然后使用System.getProperty方法。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.10</version>
<configuration>
<systemProperties>
<property>
<name>projectArtifactId</name>
<value>${project.artifactId}</value>
</property>
</systemProperties>
</configuration>
</plugin>
实现将Maven属性转换为JUnit测试的其他方法可能是对测试源文件进行资源过滤。
PS。在运行时读取Maven配置,即使在测试中也非常脏恕我直言。 :)
答案 1 :(得分:7)
看看systemPropertyVariables(和朋友们)肯定会。它做你想要的。 AFAIK没有办法只传递所有maven属性而不列出它们。
答案 2 :(得分:0)
有时,Eclipse配置为使用Java Builder进行项目 - >自动构建(右键单击&gt;项目 - >属性 - >构建器)
如果是这种情况,有时资源过滤不起作用。您有几种选择:
2和3