我正在使用azure devops,并尝试使用maven构建代码并上传,但是我收到以下错误消息。
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy-file
(default-cli) on project ojdbc7:
com.huber.abc:ojdbc7:jar:2.0 from
to dev-azure-com-abc-devops-abc-artifacts (https://pkgs.dev.azure.com/ABC-DevOps/_packaging/abc-
Artifacts/maven/v1):
Failed to transfer file
https://pkgs.dev.azure.com/abc-DevOps/_packaging/abc-
Artifacts/maven/v1/com/huber/abc/ojdbc7/2.0/ojdbc7-2.0.jar with status code 409 -> [Help 1]Failed to
deploy artifacts:
Could not transfer artifact
我发现了一个类似问题的问题thread。根据该链接,不使用快照,而使用发布。因此,我在这里添加pom.xml文件作为参考。
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>com.myorg.abc</groupId>
<artifactId>ojdbc7</artifactId>
<version>2.0</version>
</project>
我不知道如何解决此问题。我已经看到许多版本的错误409。但是看来我的问题有所不同,请指导我。
答案 0 :(得分:0)
这不是一个完整的答案,但可能会有所帮助。 我是Azure Dev Ops和Maven的新手,因此请原谅并更正注释中的任何错误。 我已经重复了一些事情,OP知道这些事情可以使其他人更清楚。
Maven允许您部署两种工件:
快照
释放
这可能意味着
该工件已经发布,无法覆盖
无法发布工件,因为它的类型错误。 例如,将发布发布到仅接受快照的存储库 或将快照发布到仅接受版本的存储库中
另请参阅:How to update a maven dependency with a same version number in Azure Artifacts(您不能发布)
我不确定如何告诉Maven如果工件已经存在,则部署失败是可以的。 (在Linux中)明显和错误的黑客攻击是:
mvn deploy || /bin/true
我不确定Azure中的等效项是什么,或者不确定是否有maven选项使其表现为这种方式。 这种黑客行为很糟糕,因为如果由于其他原因失败,它将报告部署步骤成功。
有一个插件https://github.com/chonton/exists-maven-plugin,它可以参见https://stackoverflow.com/a/53623937/1569204。同样,我不确定如何在Azure上启用它。
我以separate question of my own的身份要求
答案 1 :(得分:0)
在Azure Devops中,在工件存储源中的you cannot reuse version numbers。例如,如果您已经部署了v2.0
,并将其从feed中删除,则在以后的任何时候尝试重新部署具有相同名称的v2.0
工件时,都会收到HTTP 409错误