Кажется, что Дженкинс по-разному управляет переменными среды, когда задание является проектом Maven 2/3 или это проект в свободном стиле.
Позвольте мне показать вам мои тесты.
Проект
Это простой проект 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 я вижу эту переменную в разделе Переменные среды .
Тест 1
Я создаю новый «проект maven 2/3» в Jenkins и задаю базовую конфигурацию: версии Java и Maven, цели Maven (clean package
).Я запускаю это задание и, наконец, получаю следующее myfile.xml
:
<foo>
<bar>1.0-SNAPSHOT</bar>
<bar>42</bar>
</foo>
В этом случае обе переменные были отфильтрованы Maven.
Тест 2
Я создаю новый «проект программного обеспечения в свободном стиле» в Jenkins и задаю ту же конфигурацию, что и в Test 1 , добавив один шаг сборки, цель Maven верхнего уровня.Используется та же команда 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