Maven: Как создать сборку с артефактами моментальных снимков без имени файла времени?
У меня есть репозиторий, содержащий артефакты моментальных снимков с отметками времени.
Я хочу создать сборку, содержащую зависимости. Это прекрасно работает. Но имена артефактов содержат метку времени. Поэтому мне интересно, как удалить метку времени из имени файла только для сборки.
Я использовал этот параметр dependencySet:
<outputFileNameMapping>${artifact.artifactId}-${artifact.version}.${artifact.extension}</outputFileNameMapping>
Но швы версии содержат уже временную метку. Итак, есть ли шанс получить 1.1.1-SNAPSHOT вместо 1.1.1-20100323.071348-182?
Я использую версию 2.2-beta-4 из maven-assembly-plugin.
Ответы
Ответ 1
Не могли бы вы попробовать следующее для outputFileNameMapping
:
${artifactId}-${baseVersion}.${extension}
В соответствии с такими вопросами, как MASSEMBLY-67, MASSEMBLY-91:
Используя ${baseVersion}
для случаев, когда вы хотите сохранить имя -SNAPSHOT, плагин сохраняет возможность использовать ${version}
для присвоения имени timestamp-buildnumber, что полезно для описания точной версии библиотеки, включенной в сборку.
Обновление: После обратной связи с OP точный синтаксис (не был полностью уверен в этом):
${artifact.artifactId}-${artifact.baseVersion}.${artifact.extension}
Ответ 2
Я столкнулся с аналогичной проблемой при попытке создать пакет с плагином сборки, в котором была папка с номером версии (я занимаюсь упаковкой WSDL и XSD).
Обходной путь, который я нашел, довольно прост, я ставлю фактический номер версии в свойстве (например, 1.0), что делает его доступным в файле bundle.xml для плагина сборки и задает версию pom:
<version>${service.version}-SNAPSHOT</version>
Таким образом, на содержание моего пакета не влияет маркер SNAPSHOT, в частности он не изменяется при выполнении выпуска.