В моем 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?
Спасибо!
Возможно, тупой q .. почему эту банку нужно обрабатывать иначе, чем все другие банки и артефакты, которые для вас строит maven? – chrisinmtown
Если вам действительно нужно сделать дополнительный артефакт (где у меня есть мои сомнения), используйте [build-helper-maven-plugin] (http://mojo.codehaus.org/build-helper-maven-plugin/attach-artifact -mojo.html), который решает все эти проблемы с URL-адресами и т. д. – khmarbaise
Самый важный вопрос: как создается сборка special.jar? Мейвеном? – khmarbaise