【问题标题】:Maven deploy:deploy-file removes extension from fileMaven deploy:deploy-file 从文件中删除扩展名
【发布时间】:2016-06-30 13:59:28
【问题描述】:
我正在尝试使用 deploy-file 目标将签名文件单独部署到 Nexus 暂存存储库,但我注意到 mvn deploy 插件删除了扩展。我的文件类似于:azerty-0.1.jar.asc
但部署的文件是:azerty-0.1.asc
我尝试添加分类器:-Dclassifier=jar
被部署的文件是:azerty-0.1-jar.asc
这似乎是一种奇怪的行为。
问题:有什么解决办法吗?
【问题讨论】:
标签:
java
maven
deployment
maven-deploy-plugin
【解决方案1】:
这是相当正常的行为,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 的attach-artifact 目标,以有效地将其定义为附加工件,然后Maven 将自动将其添加到其install 和deploy 阶段。