gpt4 book ai didi

java - maven 使用简单的命令行安装和部署 3rd 方依赖项

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:23:18 26 4
gpt4 key购买 nike

我们有许多未在任何地方托管的第三方依赖项。对于其中的每一个,我们都有一个 jar 文件,我们希望能够将其安装和/或部署到我们的存储库中。一些 jar 文件有自己的依赖项,我们也需要声明这些。

我们为每个声明 groupId、artifactId、依赖项等的 jar 文件制作了 pom.xml 文件。这些 pom.xml 文件都有一个共同的父 pom,声明了一些共同的信息(例如 <repositories><distributionManagement> ).

我希望能够使用像 mvn install 这样简单的东西来安装或部署这些依赖项和 mvn deploy (或者可能是 mvn install:install-filemvn deploy:deploy-file )并从 pom.xml 文件中读取这些命令( artifactIdrepositoryId 等)的所有必要属性。

为了让它工作,至少为了部署,我尝试将以下内容放在我的父 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属性(property)。这让我可以运行 mvn deploy:deploy-file部署所有子 pom 工件。大概我可以做类似的事情来获得 mvn install:install-file去工作。

但是使用这种方法,我无法释放父 pom(我必须这样做,因为子 pom 依赖于它),如果我尝试 mvn release:perform在父 pom 上,我收到如下错误:

Cannot override read-only parameter: pomFile

我觉得我可能以错误的方式处理这件事。我真正想做的是:

  • 将所有第三方 jar 的公共(public)代码放在一个共享的父 pom 中
  • 为每个第三方 jar 编写一个额外的最小 pom
  • 能够运行类似于 mvn install 的程序或 mvn deploy无需指定所有那些复杂的命令行属性

我怎样才能最好地做到这一点?

编辑: 上面说得更清楚了,理想情况下我希望能够运行像 mvn install 这样简单的东西或 mvn deploy而不必在命令行上指定属性。

最佳答案

当 Maven 缺少依赖项时,它会在其输出中给出一个错误,其中包含用于将 jar 添加到远程存储库的命令行。该命令行将自动为您创建一个 POM 并将两者一起上传。这还不能满足您的需求吗?

使用这个工具,如果我知道我有一个没有远程存储库表示的依赖项,我通常会继续在我的构建中使用我想要的 GAV 定义它,运行一次构建,然后查看构建错误.复制部署命令,然后运行该命令。您需要确保拥有 <repository>在父 POM 中正确设置的元素加上也设置相应的 <server> settings.xml 中的元素使用存储库上传密码。除此之外,您应该一切顺利。

我想补充一点,您应该在深入了解之前检查一下 Nexus。现在设置的麻烦是值得的! :-)

关于java - maven 使用简单的命令行安装和部署 3rd 方依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4632648/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com