为什么不能我的测试中看到我的系统属性,当我松开詹金斯?(Why can't my tests

2019-10-22 06:31发布

我写了打印出一个名为“JENKINS_BUILD” System.property的价值一些单元测试代码。 此属性的值,当我在本地运行这些命令:

mvn --batch-mode test -DJENKINS_BUILD=true
mvn test -DargLine="-DJENKINS_BUILD=true"
etc.

但无论我做什么,我不能当他们在詹金斯运行得到这个属性为我的测试。 这是我使用那里的命令行选项:

mvn -DargLine="-DJENKINS_BUILD=true" --batch-mode -Dresume=false release:prepare release:perform

略有不同,但我不明白为什么会的问题。 为什么System.getProperty("JENKINS_BUILD")空对詹金斯,但“真”在我的本地环境? 这是否有些事情要使用release:prepare release:perform

我认为这基本上是同样的问题 ,但我不知道。 所不同的是他试图将参数传递到发布的插件,我想向他们传递到万无一失的插件。 另外,我想定义在命令行中的值,而不必更改我的pom.xml。 有没有办法做到这一点?

FWIW,我挂工作的解决方案。

Answer 1:

需要注意的是,如果你不叉你的JVM,你maven的命令行设置的属性被发现; 但是,如果你叉你的JVM的属性需要分叉JVM的argment名单上被复制。

我猜你是分叉你构建的某些方面,而不是在传递一个新的argline,或传递一个新的argline不从发射台(套)属性复制必要的值。

这可能意味着,在参数设置和未设置参数,你可能需要设置一个默认的(空)属性,以使在这两种情况下,你argline配置正确。 这就是第二个“榜样”在您的链接(桑德费尔哈亨的例子)的细节,哪怕是不明确的,为什么。

至于为什么这往往是在Maven释放小插件遇到,记住,行家释放小插件时,你有一个“父” Maven的过程中驱动两个完整的嵌套的Maven构建。 未能参数传递给孩子建立将意味着孩子没有按规定参数运行(因为它们只向父活动的说法,没有两个运行的Maven构建发行版本和下一个快照版本。



文章来源: Why can't my tests see my system property when I release on Jenkins?