Maven deploy:deploy-file 从文件中删除扩展名

Maven deploy:deploy-file removes extension from file

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

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

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

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

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

问题:有什么解决方法吗?

这是相当正常的行为,Maven 使用文件扩展名作为人工制品 packaging,来自 maven-deploy-plugindeploy-file, packaging 选项:

Type of the artifact to be deployed. Retrieved from the <packaging> element of the POM file if a POM file specified. Defaults to the file extension if it is not specified via command line or 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-pluginattach-artifact 目标,以有效地将其定义为附加工件,然后 Maven 将自动添加它到其 installdeploy 阶段。