繁体   English   中英

从Maven命令行部署SNAPSHOT工件和源到Nexus

[英]Deploy SNAPSHOT artifact and sources to Nexus from Maven command line

我正在尝试使用maven命令行将一个EXE文件和它的压缩源文件部署到Sonatype Nexus。 必须将文件部署为SNAPSHOT。

所以,我有2个文件:

-testXYZ.exe and source file
-testXYZ.zip

使用maven 2.2.1和这里描述的命令:

mvn deploy:deploy-file -Durl=file:///home/me/m2-repo \
                       -DrepositoryId=some.repo.id \
                       -Dfile=./path/to/artifact-name-1.0.jar \
                       -DpomFile=./path/to/pom.xml \
                       -Dsources=./path/to/artifact-name-1.0-sources.jar \
                       -Djavadoc=./path/to/artifact-name-1.0-javadoc.jar

我可以部署EXE,但无法部署源,因为maven 2.2.1使用的是deploy-plugin v2.5,直到v2.7才支持此命令。 我不允许使用更新版本的maven,所以我尝试了不同的方法。

使用这两个后续命令,我可以部署这两个工件,但是,无法从nexus下载源代码。

call mvn deploy:deploy-file -DgroupId=com.xyz -DartifactId=testXYZ -Dversion=1.1.116-SNAPSHOT -Dpackaging=zip -Dfile=testXYZ.zip -Dclassifier=sources -Durl=http://build:8081/nexus/content/repositories/snapshots -DrepositoryId=nexus
call mvn deploy:deploy-file -DgroupId=com.xyz -DartifactId=testXYZ -Dversion=1.1.116-SNAPSHOT -Dpackaging=exe -Dfile=testXYZ.exe -Durl=http://build:8081/nexus/content/repositories/snapshots -DrepositoryId=nexus

部署后,我搜索testXYZ并单击工件源下载链接。 Nexus说:

“路径上找不到物品”com.xyz:testXYZ:1.1.116-SNAPSHOT:c=sources:e=jar“!”

问题是maven上传这些工件的方式:

Line form log file while source is uploading:
Uploaded: http://build:8081/nexus/content/repositories/snapshots/com/xyz/testXYZ/1.1.116-SNAPSHOT/testXYZ-1.1.116-20120106.111705-1-sources.zip
Line form log file while Main artifact is uploading:
Uploaded: http://build:8081/nexus/content/repositories/snapshots/com/xyz/testXYZ/1.1.116-SNAPSHOT/testXYZ-1.1.116-20120106.111709-2.exe

注意111705-1和111705-2。 如果我们希望Nexus能够生成正确的链接,则最后一个数字必须相同。

这种方法在这里描述:

使用maven的deploy:deploy-file插件部署工件,其源代码和javadoc

和这里:

http://maven.apache.org/plugins/maven-install-plugin/examples/installing-secondary-artifacts.html

它适用于固定版本(例如1.1.116) ,但不适用于SNAPSHOT。

如果使用固定版本,可以将Exe和Zip文件部署到Nexus(如jar文件)。

所以,问题是:有没有办法从命令行部署工件和源SNAPSHOT到Sonatype Nexus,并确保可以通过单击源和工件链接下载这些文件?

注意:如果我禁用时间戳后缀,这可以工作,但我不想这样做。

-DuniqueVersion=false

谢谢,

马里安

我发现了这个问题的部分解决方案。 我可以像这样调用特定版本的maven-deploy-plugin:

mvn org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy-file...

这样,工件和源SNAPSHOT可以部署到Nexus,避免下载任何问题,但它的行为类似

-DuniqueVersion = FALSE

还在那里。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM