我正在尝试使用 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-plugin
, deploy-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 存储库推送一个 Artifact ,这将很难(或者更奇怪)导入在一个项目中。
如果这确实是您项目的附加 Artifact ,您应该查看 attach-artifact
build-helper-maven-plugin
的目标, 为了有效地将其定义为附加 Artifact ,Maven 将自动将其添加到其 install
中和 deploy
阶段。
关于java - Maven 部署 :deploy-file removes extension from file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38125395/