【发布时间】:2020-10-21 08:04:50
【问题描述】:
我有一个 maven 项目(在管道中),它需要消耗在另一个 azure 管道中部署(通过 mvn deploy)作为依赖项的工件。
我可以使用以下命令行将工件上传和下载到 Azure devops:
az artifacts universal publish \
--organization https://myorg.visualstudio.com \
--scope project \
--project="myproject" \
--feed myfeed \
--name someartifact-1.99.1.jar \
--version 1.99.1 \
--description "snafu" \
--debug \
--path .
和
az artifacts universal download
--organization "https://myorg.visualstudio.com/"
--project "myproject"
--scope project
--feed "myfeed"
--name "someartifact-1.99.1.jar" --version "1.99.1"
--path .
等效的 maven 命令应该是这样的:
mvn deploy:deploy-file -DWHERE="AzureDevops" clean deploy
和
mvn -X -B -s maven-azuredevops-settings.xml
-DWHERE=AzureDevops
-DrepoURL=https://myorg.pkgs.visualstudio.com/myproject/_packaging/myfeed/maven/v1
dependency:get
-Dartifact=com.foobar.blah:someartifact:1.99.1
-Ddest=./clientartifact.jar
我在 maven-azuredevops-settings.xml 中的位置:
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
https://maven.apache.org/xsd/settings-1.0.0.xsd">
<interactiveMode>false</interactiveMode>
<servers>
<server>
<id>feedname</id>
<username>azureusername</username>
<password>personal access token</password>
</server>
</servers>
</settings>
同样,我在 pom.xml 中有 Azure 上推荐的设置 - 尽管我没有完全理解它们。
但是我注意到一些不同之处。当 maven 在管道中部署包时,在提要中查看时,Artifact 前面有一个用于 maven 的大 M。它也被列为:
com.foobar.blah:someartifact 1.9.9
如果直接使用az artifacts 上传,则它是一个普通的通用包,而不是 maven 包。
一个关键的区别(它是唯一的吗?)是在同一个工件中也有一个 .pom 工件。我的 maven 构建创建了这个并将其放在本地存储库中,但我不清楚如何将其作为同一工件的一部分发布,而不是作为提要中的单独文件发布。
我对项目范围的提要也有问题(即使用 --scope 和 --project)。 Maven 报告 401 未经授权,而不是说缺少包。 尽管已登录,但如果我从命令行获取 repo 的 URL,我会得到 401。 这是我目前的主要问题。
显然,我对 Azure 和 Maven 的理解存在一些差距,这两者我都是新手。有人可以告诉我如何让 maven 命令正常工作,或者让 azure 命令在可能的情况下表现相同。
对于上下文,我试图通过离线执行等效命令来调试管道。 另见Azure DevOps Pipeline - Maven deploy release only if it does not exist
【问题讨论】:
-
az artifacts 命令来自通用包。您应该对 maven 包使用 mvn 命令。您在使用 mvn 命令时遇到了什么问题?
标签: maven azure-devops