У нас есть ряд сторонних зависимостей, которые нигде не размещены.Для каждого из них у нас есть JAR-файл, который мы хотели бы установить и / или развернуть в нашем хранилище.Некоторые из jar-файлов имеют свои собственные зависимости, и мы также должны объявить их.
Мы создали файлы pom.xml для каждого jar-файла, которые объявляют groupId, artifactId, зависимости и т. Д. Эти pom.xmlвсе файлы имеют общий родительский pom, который объявляет некоторую общую информацию (например, <repositories>
и <distributionManagement>
).
Я хотел бы иметь возможность установить или развернуть эти зависимости с помощью чего-то простого: mvn install
и mvn deploy
(или, может быть, mvn install:install-file
и mvn deploy:deploy-file
) и имеют все необходимые свойства для этих команд (artifactId
, repositoryId
и т. Д.), Которые можно прочитать из файлов pom.xml.
Чтобы заставить это работать, по крайней мере, для развертывания, я попытался поместить следующее в родительский pom:
<build>
<plugins>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.4</version>
<configuration>
<file>${jarfile}</file>
<pomFile>pom.xml</pomFile>
<repositoryId>our-id</repositoryId>
<url>our-url</url>
</configuration>
</plugin>
</plugins>
</build>
и затем, чтобы каждый из дочерних poms определил свойство jarfile
.Это позволяет мне запускать mvn deploy:deploy-file
для развертывания всех дочерних артефактов pom.Предположительно, я мог бы сделать что-то похожее, чтобы заставить mvn install:install-file
работать.
Но при таком подходе я не могу освободить родительский пом (что я должен сделать, так как от него зависят дочерние помпы), и еслиЯ пытаюсь mvn release:perform
на родительском поме, я получаю такие ошибки, как:
Cannot override read-only parameter: pomFile
Я чувствую, что, вероятно, поступаю неправильно.Все, что я действительно хочу сделать, это:
- Поместите общий код для всех сторонних jar в один общий родительский pom
- Напишите дополнительный минимальный pom для каждого стороннего jar
- Уметь запускать что-то вроде
mvn install
или mvn deploy
без указания всех этих сложных свойств командной строки
Как мне лучше всего этого добиться?
Редактировать: Выяснилось, что в идеале я хотел бы иметь возможность запускать что-то столь же простое, как mvn install
или mvn deploy
, и не указывать свойства в командной строке.