У меня есть профиль pom.xml, который вызывает сборку Maven (2.2.1) для создания пользовательского артефакта, который мы загрузим в сторонний инструмент оценки уязвимостей. Конфигурация очень проста - раздела ее необходимость этоMaven сборка: единичная структура потерь при Jenkins
<dependencySet>
<includes>
<include>${project.groupId}:*:jar</include>
</include>
<outputFileNameMapping>${artifact.artifactId}.${artifact.extension}</outputFileNameMapping>
</dependencySet>
<dependencySet>
<outputDirectory>lib</outputDirectory>
<includes/>
<excludes>
<exclude>${project.groupId}:*</exclude>
</excludes>
</dependencySet>
То есть - каталог верхнего уровня имеет свои банки, отделенные от информации о версии, и все зависимости находятся в директории/Lib и включает в себя информацию о версии.
Это довольно просто, и это работает на моем рабочем столе.
На сервере Jenkins все захлопнуто в верхнюю директорию и информация о версии лишена.
Моя первая мысль заключалась в том, что может возникнуть проблема с $ {project.groupId} на сервере. Это кажется маловероятным, но это очевидная вещь для проверки. К сожалению, проблема остается.
Это не потому, что это tar.gz - я вижу такое же поведение с .zip?
Любые идеи?
сравнить версии плагина сборки, которые используются локально и на jenkins (используйте параметр -X, чтобы увидеть вывод отладки). У вас, скорее всего, разные версии плагина. Просто убедитесь, что они оба используют одну и ту же версию плагина, и вам должно быть хорошо идти. –
Чтобы развернуть комментарий пользователя, добавьте шаг предварительной сборки для печати всех переменных среды. Вы можете быть удивлены всеми переменными среды jenkins, которые будут clobber maven poms, особенно фильтрация ресурсов! – Electrawn
Спасибо. Сегодня утром мы обнаружили это самостоятельно. (Примечание для себя: SO не отправляет почту по комментариям, только ответы! Не забудьте проверить сайт!) – bgiles