Jenkins不会在自由风格的项目中使用环境变量过滤Maven资源

时间:2011-09-20 07:17:38

标签: java maven hudson jenkins

当作业是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

2 个答案:

答案 0 :(得分:0)

我遇到了同样的事情。

我的解决方法是转到项目的配置页面,单击Maven构建步骤的“高级”,然后在提供的文本字段中定义我的属性,如foo.bar=42

答案 1 :(得分:0)

我认为这是因为Maven中存在错误,而不是Jenkins问题。

使用Maven 3.0.3时,我遇到了同样的问题(无论Jenkins作业配置如何)。 升级到Maven 3.0.4后问题得到解决。