maven以编程方式将工件部署到Nexus的快速方法(Java)
我目前编写了一个Java程序,将许多遗留JAR部署到Nexus。我的方法是调用一个进程,在命令行上启动deploy:deploy-file
目标
mvn deploy:deploy-file ...
这相当慢。我想知道有没有更快的方法
你可以在下面搜索框中键入要查询的问题!
我目前编写了一个Java程序,将许多遗留JAR部署到Nexus。我的方法是调用一个进程,在命令行上启动deploy:deploy-file
目标
mvn deploy:deploy-file ...
这相当慢。我想知道有没有更快的方法
# 1 楼答案
您可以使用EclipseAetherAPI在Java中以编程方式完成此操作。查看我的Maven Repository Tools的来源以了解更多细节。事实上,如果您的所有工件都已经以Maven repository格式存在于本地文件夹中,那么您可能可以根据需要直接使用它
具体来说,部署相关的代码在
https://github.com/simpligility/maven-repository-tools/blob/master/maven-repository-provisioner/src/main/java/com/simpligility/maven/provisioner/MavenRepositoryDeployer.java
# 2 楼答案
如果您专门针对Nexus,您可能会发现使用their REST API执行上载更简单:
在Java程序中,然后可以使用
HttpURLConnection
进行POST调用(example of that here与authentication here和documentation of cURL here)。基本上,在POST参数中,您需要使用r=releases
、hasPom=true
(或者false
如果您正在上载POM)、e
作为工件的扩展名、g
、a
、v
和p
作为坐标(groupId、artifactId、版本和打包),最后file
作为要部署的文件请注意,您将无法上载快照because it is explicitely disabled
如果您想要一个更通用的解决方案,这将适用于任何工件,以及任何远程存储库(甚至是本地存储库),您可以直接使用Aether API,Maven 3.1及更高版本在场景下使用该API。团队在^{} 样本中有这样一个任务的例子
将乙醚依赖项添加到项目中:
然后您可以使用以下代码来部署工件:
此代码将具有给定坐标(groupId、artifactId、类型、分类器和版本)的单个工件部署到配置的远程存储库:
""
作为分类器李>Artifact
上的方法setFile
设置的李>file:///C:/m2-repo
或scp://host.com/path/to/repo
李>Authentication
连接到远程存储库(如代码段所示)李>如果您希望使用它部署附加的工件(如POM文件),您可以创建一个
SubArtifact
,其中包括:这将向上面配置的工件附加一个没有分类器的POM工件。然后,您可以将其添加到部署请求中,就像主请求一样:
他们两人都将被部署