当作业是Maven 2/3项目或者它是一个自由式项目时,似乎Jenkins管理环境变量的方式不同。
让我告诉你我的测试。
项目
这是一个简单的Java 1.6项目(例如由默认的Maven原型生成),它在src/main/resources
中包含以下myfile.xml
:
<foo>
<bar>${project.version}</bar>
<bar>${foo.bar}</bar>
</foo>
在我的pom.xml
中,我要求Maven过滤此目录:
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
现在,我将foo.bar
属性定义为Windows环境(等于42
)。
在Jenkins管理页面的系统信息中,我在 Environment Variables 部分看到了这个变量。
测试1
我在Jenkins中创建了一个新的“maven 2/3项目”,并设置了基础配置:Java和Maven版本,Maven目标(clean package
)。
我经营这份工作,最后,我得到以下myfile.xml
:
<foo>
<bar>1.0-SNAPSHOT</bar>
<bar>42</bar>
</foo>
在这种情况下,两个变量都由Maven过滤。
测试2
我在Jenkins中创建了一个新的“自由式软件项目”,并通过添加一个构建步骤(顶级Maven目标)设置与 Test 1 中相同的配置。
使用相同的Maven命令,即clean package
。构建完成后,myfile.xml
看起来像:
<foo>
<bar>1.0-SNAPSHOT</bar>
<bar>${foo.bar}</bar>
</foo>
显然,当构建基于自由风格的项目时,不会考虑环境变量foo.bar
。
我的问题:有没有理由有这样的行为?或者它是詹金斯的虫子?
Jenkins v1.430(安装在Windows 2003服务器上),Maven 2.0.9或Maven 2.2.1(相同行为),Java 1.6
答案 0 :(得分:0)
我遇到了同样的事情。
我的解决方法是转到项目的配置页面,单击Maven构建步骤的“高级”,然后在提供的文本字段中定义我的属性,如foo.bar=42
答案 1 :(得分:0)
我认为这是因为Maven中存在错误,而不是Jenkins问题。
使用Maven 3.0.3时,我遇到了同样的问题(无论Jenkins作业配置如何)。 升级到Maven 3.0.4后问题得到解决。