У нас есть несколько сторонних зависимостей, которые не размещаются нигде. Для каждого из них у нас есть файл jar, который мы хотели бы установить и/или развернуть в нашем репозитории. Некоторые из файлов jar имеют свои собственные зависимости, и нам также нужно объявить их.maven установить и развернуть сторонние зависимости с простой командной строкой
Мы сделали pom.xml файлы для каждого файла банку, который Объявите GroupID, артефакта, зависимости и т.д. Эти pom.xml все файлы имеют общий родительский POM, объявляющий часть общей информации (например <repositories>
и <distributionManagement>
).
Я хотел бы иметь возможность установить или развернуть эти зависимости с чем-то же просто, как и mvn install
mvn deploy
(или, возможно, mvn install:install-file
и mvn deploy:deploy-file
) и имеют все необходимые свойства для этих команд (artifactId
, repositoryId
и т.д.) будет читайте из файлов pom.xml.
Чтобы получить эту работу, по крайней мере, для развертывания, я попытался положить следующий в моем родительском ПОМ:
<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
для развертывания всех артефактов детского пом. Предположительно, я мог бы сделать что-то подобное, чтобы получить работу mvn install:install-file
.
Но при таком подходе, я не в состоянии освободить родительский POM (который я должен делать, так как ребенок помы зависят от него), и если я пытаюсь mvn release:perform
на родительском П, я получаю ошибки как:
Cannot override read-only parameter: pomFile
Я чувствую, что, вероятно, я ошибаюсь. Все, что я действительно хочу сделать, это:
- Поместите общий код для всех баночек третьих лиц в одной общих родительском П
- Написать дополнительный минимальный POM для каждой баночки третьей стороны
- Уметь запустить что-то как
mvn install
илиmvn deploy
без необходимости указывать все эти сложные свойства командной строки
Как я могу лучше всего добиться этого?
Edit: Сделано это понятнее выше, что в идеале я хотел бы иметь возможность запускать что-то же просто, как mvn install
или mvn deploy
и не должны указывать свойства в командной строке.
Извините, что такое GAV? И я не думаю, что командная строка, которую Maven дает как ошибка, решит мою проблему здесь - как Maven может знать, какие зависимости, которые jar-файл имеет без меня, также пишут pom для этого? – Steve
Это аббревиатура от "Group, Artifact, Version". Когда вы определяете GAV для зависимости, которая еще не находится в удаленном репо (центральном или одном, определенном в '', он генерирует эту командную строку как часть отчета об ошибке. Попробуйте! –
Да, я вижу, что он генерирует командную строку типа 'mvn deploy: deploy-file -DgroupId = ... -DartifactId = ... -Dversion = ... -Dpackaging = jar -Dfile =/path/to/file -Durl = [url] -DrepositoryId = [id] '. Но он не знает, что такое зависимости, которые имеет jar. И поскольку url и repositoryId являются общими для всех зависимостей третьей стороны, которые у меня есть, я хочу просто объявить их один раз в родительском помпе и не нужно помнить их каждый раз. – Steve