我需要使用Maven执行一些测试,并从命令行传递参数。
我的Java代码应获取以下参数:System.getenv(“ my_parameter1”);
并以下面的示例在pom.xml文件中定义参数:(和后者,我将修改pom.xml以从公共行mvn clean install -Dmy_parameter1
= value1获取参数)
但它不起作用;System.getenv(“ my_parameter1”)返回null。我应该如何在pom.xml文件中定义参数?
pom.xml
<project>
...
<profiles>
<profile>
<properties>
<my_parameter1>value1</my_parameter1>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<executions>
<execution>
<id>slowTest</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<skip>false</skip>
<includes>
<include>**/*Test.java</include>
<include>**/*TestSlow.java</include>
</includes>
<properties>
<my_parameter1>value1</my_parameter1>
</properties>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
System.getenv()读取
环境变量 ,例如PATH
。您要读取的是 系统属性 。-D [系统属性名称] = [值]用于系统属性,而不用于环境变量。
您有两种选择:
如果要使用环境变量,请my_parameter1
在启动Maven之前使用特定于操作系统的方法来设置环境变量。在Windows中,请set my_parameter1=<value>
在’nix中使用export my_parameter1=<value>
。
您可以使用System.getProperty()从代码中读取系统属性值。
例:
String param = System.getProperty("my_parameter1");
在您的surefire插件配置中,您可以使用:
<configuration>
<systemPropertyVariables>
<my_property1>${my_property1}</my_property1>
</systemPropertyVariables>
</configuration>
它采用Maven属性_my_property1_并在测试中进行设置。
关于这个的更多细节在这里。
我不确定Maven的系统属性是否会自动传递给测试和/或fork模式是否会影响这种情况的发生,因此最好将它们显式传递。
问题内容: 我们已经设置了一些参数来在Jenkins中执行构建(使用简单的“参数化构建”设置)。作业被设置为Maven测试。有没有办法以编程方式将这些参数传递到我们的Java代码中?我们需要基于通过Jenkins设置的参数来执行某些更新功能。 问题答案: 是的,您可以通过Maven执行将Jenkins参数传递给Java代码,如下所示: 请注意, $ JOB_PARAM_1 将捕获Jenkins上设
问题内容: 我正在尝试使用Maven释放一个库并执行站点部署来sourceforge(我首先创建了一个交互式shell)。该发布由Jenkins作业完成(使用Jenkins的Maven发布插件)。 我试过了: 和 但两次工作都挂在site:第一个模块的部署: 当我停止工作时,将在最后打印以下内容: 这可能意味着$ {username}尚未解析。 如何解析$ {username}? 编辑: 请注意以
我需要传递以下价值观… exeEvironment(测试环境),testGroup(testNG中的组) 从命令行->POM->TestNG->测试用例。 基于这两个帖子.... 从maven传递一个Java参数 如何从Surefire Maven插件向guicified TestNG测试传递参数? 我做了以下配置.. 在surefire插件中,我尝试了两个选项,但似乎都不起作用。 ===== (
问题内容: 我正在寻找一种从Java调用exe并传递特定参数的机制。我能怎么做? 先前的代码有效。但是我无法在中传递参数。MyExe.exe接受参数。另一个问题是PathToExe有空格。ProcessBuilder似乎无法正常工作。例如: 谢谢。 问题答案: 在构造函数本身中传递参数。
问题内容: 我在很多地方都看到过,包括Python使用的Python文档通过“赋值”语义传递。来自Java背景,说“ Java按值传递基元,按引用传递对象”的常见错误是由于按值传递了对象引用,我不禁怀疑Python是否真的在做同样的事情事情。 在我看来,按值传递对象引用和按赋值传递对象的概念似乎相同。Python使用术语“传递分配”是否是为了减轻诸如我上面所述的错误语句的问题?如果是这样,可以公平
使用sonar hudson和maven设置代码分析我的计划是每天运行分析,因此我尝试在hudson中传递参数,如下所示: 而不是每天手动输入/更改日期——有没有办法让它成为一个每天自动更改的参数?谢谢满足