我正在尝试使用deploy-file
目标分别将签名文件部署到Nexus staging存储库,但我注意到mvn deploy plugin删除了扩展名。我的文件类似于:azerty-0.1.jar.asc
但部署的文件是:azerty-0.1.asc
我尝试添加分类器:-Dclassifier=jar
部署的文件是:azerty-0.1-jar.asc
这似乎是一种奇怪的行为。
问题:有任何想法如何解决它?
答案 0 :(得分:4)
这是一种正常行为,Maven使用文件扩展名作为人工制品packaging
,来自maven-deploy-plugin
,deploy-file
,packaging
选项:
要部署的工件的类型。如果指定了POM文件,则从POM文件的
<packaging>
元素中检索。 如果未通过命令行或POM指定,则默认为文件扩展名。
注意:粗体是我的。
此外,classifier
选项确实会在版本和作为分类器提供的字符串之间添加-
:即“maven convention。
在您的情况下,您想要指定一个特殊的packaging
,如果您确实希望远程文件具有jar.asc
扩展名,则为jar.asc
。
因此以下工作:
mvn deploy:deploy-file -Dfile=azerty-0.1.jar.asc -Dpackaging=jar.asc -DrepositoryId=your_id -Durl=http://your_repository -DgroupId=your_groupId -DartifactId=azerty -Dversion=0.1
请注意-Dpackaging=jar.asc
有效告诉Maven文件扩展名为jar.asc
。
作为一般说明,如果您将存储库用作构建存储,那么这仍然是合理的,否则在您的情况下,您将向Maven存储库推送一个工件,这将很难导入(或者说很奇怪)在一个项目中。
如果这实际上是您项目的另一个工件,您应该查看build-helper-maven-plugin
的{{3}}目标,以有效地将其定义为附加工件,然后Maven会自动将其添加到其中install
和deploy
阶段。