Изменение значения свойства Maven при его замене - PullRequest
1 голос
/ 11 января 2011

Есть ли способ в Maven преобразовать значение свойства, например, с помощью простого вызова String.replace (), прежде чем значение будет подставлено в файл?

У меня есть ситуация, когда яя пытаюсь создать сборку, содержащую зависимости maven с определенной структурой каталогов.В частности, я хочу поместить каждый артефакт в структуру каталога, которая соответствует его groupId.Другими словами, если у меня есть артефакт org.example.app:library1:jar, я хочу поместить его в каталог org/example/app/library1.jar.

Я попытался создать дескриптор сборки, чтобы поместить зависимые артефакты в подкаталог, но я достигТочка, в которой я не могу преобразовать groupId (с точечной нотацией) в путь.Ниже приведена часть dependencySet используемого мной файла сборки.

<dependencySets>
  <dependencySet>
    <outputFileNameMapping>${artifact.groupId}/${artifact.artifactId}/${artifact.version}/${artifact.artifactId}-${artifact.version}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
    <outputDirectory>.</outputDirectory>
    <unpack>false</unpack>
    <useTransitiveDependencies>true</useTransitiveDependencies>
    <useTransitiveFiltering>false</useTransitiveFiltering>
    <useProjectArtifact>false</useProjectArtifact>
  </dependencySet>
</dependencySets>

PS Я также исследовал режим хранилища подключаемого модуля сборки, но он содержит слишком много информации (например, хэши SHA1 и MD5, плюс файлы POM Maven).).

1 Ответ

0 голосов
/ 22 января 2011

Файл дескриптора сборки используется плагином сборки и сам по себе не имеет механизмов для внедрения свойств Maven, таких как $ {my.property}. Однако, в качестве обходного пути, вы можете использовать плагин ресурсов maven для «фильтрации» файла дескриптора сборки (пока он копируется из одного места в другое). Это включит замену, которую вы будете искать.

Тогда плагин сборки Maven будет использовать отфильтрованный файл дескриптора.

...