我们有许多不在任何地方托管的第三方依赖项。对于其中的每一个,我们都有一个 jar 文件,我们希望能够安装和/或部署到我们的存储库。一些 jar 文件有自己的依赖关系,我们还需要声明它们。
我们为每个 jar 文件创建了 pom.xml 文件,声明了 groupId、artifactId、依赖项等。这些 pom.xml 文件都有一个共同的父 pom 来声明一些公共信息(例如<repositories>
和<distributionManagement>
)。
我希望能够使用mvn install
和mvn deploy
(或者可能mvn install:install-file
和)这样简单的东西来安装或部署这些依赖项,并从 pom.xml 文件中读取这些命令( 、等)mvn deploy:deploy-file
的所有必要属性。artifactId
repositoryId
为了让它工作,至少在部署时,我尝试在我的父 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>
然后让每个子 pom 定义jarfile
属性。这使我可以运行mvn deploy:deploy-file
以部署所有子 pom 工件。大概我可以做一些类似的事情mvn install:install-file
来上班。
但是使用这种方法,我无法释放父 pom(我必须这样做,因为子 pom 依赖它),如果我尝试mvn release:perform
在父 pom 上,我会收到如下错误:
Cannot override read-only parameter: pomFile
我觉得我可能会以错误的方式解决这个问题。我真正想做的是:
- 将所有第三方 jar 的通用代码放在一个共享的父 pom 中
- 为每个第三方 jar 编写一个额外的最小 pom
- 能够运行类似
mvn install
或mvn deploy
不必指定所有那些复杂的命令行属性的东西
我怎样才能最好地做到这一点?
编辑:在上面说得更清楚了,理想情况下,我希望能够运行一些简单的东西,mvn install
或者mvn deploy
不必在命令行上指定属性。