我正在尝试使用deploy-file
目标将签名文件单独部署到 Nexus 暂存存储库,但我注意到 mvn deploy 插件删除了扩展。我的文件是这样的:azerty-0.1.jar.asc
但部署的文件是:azerty-0.1.asc
我尝试添加一个分类器:-Dclassifier=jar
部署的文件是:azerty-0.1-jar.asc
这似乎是一种奇怪的行为。
问题:任何想法如何解决它?
我正在尝试使用deploy-file
目标将签名文件单独部署到 Nexus 暂存存储库,但我注意到 mvn deploy 插件删除了扩展。我的文件是这样的:azerty-0.1.jar.asc
但部署的文件是:azerty-0.1.asc
我尝试添加一个分类器:-Dclassifier=jar
部署的文件是:azerty-0.1-jar.asc
这似乎是一种奇怪的行为。
问题:任何想法如何解决它?
这是相当正常的行为,Maven 使用文件扩展名作为 artefact packaging
, from maven-deploy-plugin
, deploy-file
,packaging
选项:
要部署的工件的类型。
<packaging>
如果指定了 POM 文件,则从 POM 文件的元素中检索。如果未通过命令行或 POM 指定,则默认为文件扩展名。
注意:粗体是我的。
此外,该classifier
选项确实会-
在版本和作为分类器提供的字符串之间添加一个:这是 maven约定。
在您的情况下,您想指定一个特殊的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 存储库,然后将其难以(或者相当奇怪)导入到项目中.
相反,如果这确实是您项目的附加工件,您应该查看 的attach-artifact
目标build-helper-maven-plugin
,以有效地将其定义为附加工件,然后 Maven 会自动将其添加到其install
和deploy
阶段。