您好我正在一个java maven项目,我必须在pom.xml文件中定义一些variables。
我已经在我的pom.xml文件中定义了一个variables如下。
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.16</version> <configuration> <includes> <include>**/*Test*.java</include> <include>**/*Tests*.java</include> <include>**/Test*.java</include> </includes> <systemPropertyVariables> <my.value>NOTNULL</my.value> </systemPropertyVariables> </configuration> </plugin>
要尝试访问my.value
variables,我正在使用下面的一段Java代码。
String testdata = System.getProperty("my.value"); System.out.println(testdata);
但是,即使设置variables的值,控制台输出始终显示为null
。
任何人都可以指出这里有什么问题吗?
提前致谢。
编辑:我也试过在maven-failsafe-plugin
下声明systemPropertyVariables
,但没有任何改变。
注意 :当我尝试按如下方式转换testdata代码行时,
String testdata = System.getProperty("my.value").toString();
在上面的行我得到一个NullPointerexception。
编辑:对不起,以前发布这个答案..
我正在运行它作为JUnittesting使用您提供的插件… /插件代码,但这里是我的控制台输出..
21 Oct 2014 12:36:56,973 main INFO s.MyClass - Default Implicit timeout set in Driver to: 100 21 Oct 2014 12:36:56,973 main INFO s.MyClass - Default URL for server is set to: http://localhost:8080 ---- null
该url是我想从pom.xml文件检索,我写的条件是
如果variables中的值为空以$ {开头,则返回localhost:8080,否则返回url。
所以如果你能指出我在这里有什么问题
用JDK 1.6.0_67
在Windows
上运行maven-3.2.3
用maven-archetype-quickstart
创建一个项目…
添加了相关的pom行…在上面的问题中将确实的例子与特定的行相结合。
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.16</version> <configuration> <systemPropertyVariables> <my.value>NOTNULL</my.value> <buildDirectory>${project.build.directory}</buildDirectory> </systemPropertyVariables> </configuration> </plugin>
AppTest.java中的相关行
/** * Rigourous Test :-) */ public void testApp() { System.out.println(System.getProperty("my.value")); System.out.println(System.getProperty("buildDirectory")); assertTrue( true ); }
mvn test
相关输出
------------------------------------------------------- TESTS ------------------------------------------------------- Running com.mycompany.app.AppTest NOTNULL C:\Users\raghu\Documents\GitHub\mvn-examples\test-properties\target Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 sec - in c om.mycompany.app.AppTest
这是github中的项目。
@Raghuram感谢您的帮助。
我有办法解决这个问题。
在我的java文件,在@Before注释,我设置变量的值如下
System.setProperty("my.value","this value");
现在它工作得很好。
干杯。
注意:伙计们,我很抱歉张贴另一个问题作为答案.. 🙁