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, в частности он не изменяется при выполнении выпуска.