2012-03-05 2 views
1

У меня возникла проблема с наличием нескольких внешних зависимостей в Maven.Удаление версии из файла имени пользователя Maven в файле war

У меня есть сторонние библиотеки, которые вместе образуют выпуск продукта. Сторонний продукт не использует maven или не предоставляет файл pom, поэтому я застрял в наборе связанных файлов .jar, которые я не знаю, точное соединение, кроме того, что все они принадлежат друг другу.

Скажем, у меня есть эти файлы:

  • mail.jar
  • pe.jar
  • xpp3-1.1.3.4.M.jar

Все они являются частью одного и того же «версия» продукта, скажем, версия 2.0. Когда я построить этот проект с Maven, я получаю в/цели/папку MyProject и файл MyProject.war, то файлы со следующими именами:

  • почты 2.0.jar
  • ре-2.0.jar
  • xpp3-1.1.3.4.M-2.0.jar

Как я могу сказать Maven, чтобы исключить эти версии тегов во время сборки, так что я получаю эти имена файлов в моей окончательной сборке?

  • mail.jar
  • pe.jar
  • xpp3-1.1.3.4.M.jar

Я посмотрел на Maven-войны-плагин: 2,2 -> по умолчанию:

<outputFileNameMapping>${artifact.artifactId}-${artifact.version}${dashClassifier?}.${artifact.extension}</outputFileNameMapping> -> Выдает ошибку: Не удалось copyt файл для артефакта [..]: Недопустимый аргумент

Кроме того, моя версия ... <outputFileNameMapping>${artifact.artifactId}.${artifact.extension}</outputFileNameMapping>

... дает странные имена:

com.foo.bar-${artifact.artifactId}.${artifact.extension} (без расширения, нет перевода свойств)

Что я делаю неправильно?

ответ

0

Вы идете не так. Разверните их на свой локальный экземпляр Nexus и объявите их как зависимость в POM вашего проекта. Подсказка: XPP3 и mail.jar уже доступны в Maven Central. Не изобретайте велосипед.

+0

Это не ответ на мой вопрос. Это пример, у меня есть 20 библиотек, так или иначе зависящих друг от друга, поставляемых с сторонним продуктом. Колесо уже было изобретено поставщиком. Они объявлены в моем POM, но результатом этого POM является то, что мои результирующие библиотеки теперь имеют значение в своих именах. Я хочу избавиться от этого. – timh

+0

Какова конкретная проблема с этими номерами версий в именах файлов? –

-1

Я опаздываю на вечеринку, но я верю, что вы хотите это сделать.

<build> 
    <finalName>${project.artifactId}</finalName> 
</build> 
+0

Это изменит название войны, а не библиотеки внутри .war, что, я считаю, то, о чем он просит. – atom88

2

Я даже позже, но пока еще нет правильного ответа ...

При создании WAR артефакт, и вы хотите JARs зависимостей, которые приземляются в мишени/$ {finalName}/WEB-INF/Lib не иметь номер версии в имени файла, то вы можете использовать

<outputFileNameMapping>@{artifactId}@@{dashClassifier?}@[email protected]{extension}@</outputFileNameMapping> 

в конфигурации maven-war-plugin.

Смежные вопросы