2015-03-10 6 views
1

В моем maven pom у меня есть дополнительный файл jar, который я хотел бы включить с моими приложениями для развертывания. У меня есть баночка-файл здание успешно, и я решил использовать Maven-Deploy-плагин, как так (версия мудрый, я использую 2.8.2 от dependencyManagement):Как развернуть дополнительные артефакты в maven без жесткого кодирования репозитория?

<plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-deploy-plugin</artifactId> 
     <executions> 
     <execution> 
      <id>deploy-special-jar</id> 
      <phase>deploy</phase> 
      <goals> 
      <goal>deploy-file</goal> 
      </goals> 
      <configuration> 
      <repositoryId>${project.distributionManagement.repository.id}</repositoryId> 
      <url>${project.distributionManagement.repository.url}</url> 
      <groupId>${project.groupId}</groupId> 
      <artifactId>${project.artifactId}</artifactId> 
      <version>${project.version}-special</version> 
      <file>${project.build.directory}/special.jar</file> 
      </configuration> 
     </execution> 
     </executions> 
    </plugin> 

Это отлично работает, но есть небольшая проблема. Если вы заметили, приведенный выше pom использует project.distributionManagement.repository.url как для параметров repositoryId, так и для url. Однако это означает, что независимо от того, создаю ли снимок или версию выпуска, я всегда использую для себя область релиза, что не идеально. Что делать, если я создаю снимок? Ну, ответ, похоже, заключается в изменении project.distributionManagement.repository.url для project.distributionManagement.snapshotRepository.url

Мне не нравится идея изменения этих строк вручную, потому что мне нравится использовать maven-release- плагин для переключения между моментальными снимками и версиями выпуска. Теперь мне придется добавить некоторые скрипты, чтобы каждый раз менять эти строки. Это возможно, но не идеально.

Кажется, что кто-то спросил об этой точной проблеме, прежде чем в 2008 году, и не было на самом деле хороший ответ: http://maven.40175.n5.nabble.com/problems-with-the-maven-deploy-plugin-td107307.html Итак, я думал, что я хотел бы добавить его здесь, чтобы посмотреть, что люди придумали.

Я рассматриваю возможность использования плагина build-helper для динамического изменения этого свойства, но это похоже на потенциальную кроличью яму, тем более что кто-то пытался сделать что-то подобное раньше (по другим причинам, но концепция аналогична): Check if Maven pom is SNAPSHOT

Итак, что тут правильного ответа? Должна ли это быть функция-запрос? Или, есть ли простой способ обойти эту проблему, которую люди используют? Мне любопытно, что сделали другие. Кому-нибудь повезло с плагином build-helper?

Спасибо!

+1

Возможно, тупой q .. почему эту банку нужно обрабатывать иначе, чем все другие банки и артефакты, которые для вас строит maven? – chrisinmtown

+0

Если вам действительно нужно сделать дополнительный артефакт (где у меня есть мои сомнения), используйте [build-helper-maven-plugin] (http://mojo.codehaus.org/build-helper-maven-plugin/attach-artifact -mojo.html), который решает все эти проблемы с URL-адресами и т. д. – khmarbaise

+0

Самый важный вопрос: как создается сборка special.jar? Мейвеном? – khmarbaise

ответ

0

Это больше походит на второе исполнение Maven-баночки-плагин (после удаления вещи), и это приведет к автоматической загрузке через mvn deploy нет необходимости делать такие странные вещи ...

Или может быть с помощью Maven -assembly-plugin, который создает дополнительные артефакты (один или несколько) ... или, возможно, maven-shade-plugin. Я не уверен, как вы снимаете вещи ...

+0

Я собираюсь сделать это. Похоже, что это будет эффективным решением, которое мне сейчас нужно.Я признаю, что мне немного грустно, что maven-deploy-plugin не такой гибкий, как я надеялся, что это возможно. Возможно, это стоит особенность-запрос. – user2182758

+0

maven-deploy-plugin предназначен для развертывания артефактов больше ничего. Кроме того, есть другие способы решения этих проблем, как упоминалось выше. – khmarbaise

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