b0s*_*0ss 5 nexus maven-deploy-plugin
我正在尝试使用 maven 命令行部署一个 EXE 文件并将它的源文件压缩到 Sonatype Nexus。文件必须部署为快照。
所以,我有2个文件:
-testXYZ.exe and source file
-testXYZ.zip
Run Code Online (Sandbox Code Playgroud)
使用 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
Run Code Online (Sandbox Code Playgroud)
我可以部署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
Run Code Online (Sandbox Code Playgroud)
部署后,我搜索 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
Run Code Online (Sandbox Code Playgroud)
通知 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 文件)。
所以,问题是: 有没有办法将工件和源快照从命令行部署到 Sonatype Nexus,并确保可以通过单击源和工件链接来下载这些文件?
注意:如果我禁用时间戳后缀,这可以工作,但我不想这样做。
-DuniqueVersion=false
Run Code Online (Sandbox Code Playgroud)
谢谢,
马扬
我找到了这个问题的部分解决方案。我可以像这样调用特定版本的 maven-deploy-plugin:
mvn org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy-file...
Run Code Online (Sandbox Code Playgroud)
这样,工件和源快照可以部署到 Nexus,避免任何下载问题,但它的行为就像
-DuniqueVersion=false
仍然在那里。
| 归档时间: |
|
| 查看次数: |
10129 次 |
| 最近记录: |