如何从 JUnit 测试读取 Maven 属性?
我正在使用 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”。无论如何,感谢任何帮助,-戴夫
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
查看 systemPropertyVariables (和朋友)万无一失。它做你想做的事。
AFAIK 没有办法只传递所有 Maven 属性而不列出它们。
Look at the systemPropertyVariables (and friends) for surefire. It does what you want.
AFAIK there is no way to just pass all the maven properties without listing them.
有时,Eclipse被配置为使用Java Builder进行项目->自动构建(右键单击->项目->属性->构建器)
如果是这种情况,有时资源过滤不起作用。您有多种选择:
2 和 3 的描述见 http://scottizu.wordpress.com/2013/10/16/reading-the-project-version-from-the-maven-pom-file/
Sometimes, Eclipse is configured to use the Java Builder for Project->Automatically Build (Right Click->Project->Properties->Builders)
If such is the case, sometimes the resource filtering doesn't work. You have several options:
2 and 3 are described in http://scottizu.wordpress.com/2013/10/16/reading-the-project-version-from-the-maven-pom-file/
Maven 项目属性不会自动添加到 Java 系统属性。为了实现这一目标,有很多选择。对于这一特定需求,您可以为 maven-surefire-plugin (运行测试的插件)定义一个系统属性,然后使用 System.getProperty 方法。
实现将 Maven 属性获取到 JUnit 测试的其他方法可能是测试源文件的资源过滤。
附言。恕我直言,即使在测试中,在运行时读取 Maven 配置也是相当肮脏的。 :)
Maven project properties aren't automatically added to Java System properties. To achieve that there are quite a few options. For this specific need you could define a System property for maven-surefire-plugin (the one running tests) and then use the System.getProperty method.
Other way to achieve getting Maven properties to JUnit tests would probably be resources filtering for test source files.
PS. Reading Maven configurations at runtime, even in tests is pretty dirty IMHO. :)