6

我正在尝试使用deploy-file目标将签名文件单独部署到 Nexus 暂存存储库,但我注意到 mvn deploy 插件删除了扩展。我的文件是这样的:azerty-0.1.jar.asc

但部署的文件是:azerty-0.1.asc

我尝试添加一个分类器:-Dclassifier=jar

部署的文件是:azerty-0.1-jar.asc

这似乎是一种奇怪的行为。

问题:任何想法如何解决它?

4

1 回答 1

6

这是相当正常的行为,Maven 使用文件扩展名作为 artefact packaging, from maven-deploy-plugin, deploy-file,packaging选项:

要部署的工件的类型。<packaging>如果指定了 POM 文件,则从 POM 文件的元素中检索。如果未通过命令行或 POM 指定,则默认为文件扩展名。

注意:粗体是我的。

此外,该classifier选项确实会-在版本和作为分类器提供的字符串之间添加一个:这是 maven约定

在您的情况下,您想指定一个特殊的packagingjar.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 会自动将其添加到其installdeploy阶段。

于 2016-06-30T14:45:22.063 回答