当前位置: 首页 > 知识库问答 >
问题:

上传和下载Azure工件的等效maven命令和设置是什么?

马新觉
2023-03-14

我有一个 maven 项目(在管道中),它需要使用在另一个 Azure 管道中部署(通过 mvn 部署)的项目作为依赖项。

我可以使用命令行将工件上传到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中有Azure上推荐的设置。xml—尽管我没有完全理解它们。

但是我注意到一些不同之处。当maven在管道中部署一个包时,当在提要中查看时,Artiif前面有一个代表maven的大M。它也被列为:

com.foobar.blah:someartifact 1.9.9

如果直接使用 az 工件上传则它是一个普通的通用包,而不是 maven 包。一个关键的区别(这是唯一的区别吗?)是同一个工件中也有一个.pom工件。我的maven构建创建了这个并将其放在本地存储库中,但我不清楚如何将其作为同一项目的一部分发布,而不是在Feed中发布单独的文件。

我在项目范围的提要(即 --范围和 --项目)方面也遇到了问题。Maven报告了401未经授权,而不是说包裹丢失了。如果我从命令行获取存储库的URL,尽管已登录,但我会得到401。这是我目前的主要问题。

显然,我对Azure和Maven的理解存在一些差距,这两者我都不熟悉。有人能告诉我如何让maven命令正常工作,或者在可能的情况下让azure命令表现相同吗?

对于上下文,我尝试通过离线执行等效的命令来调试管道。另请参见Azure devo PS Pipeline-Maven deploy release(仅当它不存在时)

共有1个答案

狄阳秋
2023-03-14

首先,对于Universal package,它只是一个你上传到我们服务的文件集合,并标有名称和版本。您可以在构建或发布期间通过通用软件包任务下载它。

更多信息,请参阅:通用软件包入门

由于您使用的是 JAVA 包,请通过 MVN 部署/发布 JAVA 包。

其次,有收集和项目级/范围提要。对于项目级别/范围,您需要在URL中指定项目名称,例如https://pkgs.dev.azure.com/{org}/{project}/package/{feed}/maven/v1。

第三,要在另一个 JAVA 项目中使用 JAVA 包,您需要在设置中配置凭据.xml在用户的文件夹 (${user.home}/.m2) 中。对于构建或发布管道,您只需添加 Maven 身份验证任务即可进行身份验证。

然后,需要在pom中指定包。xml(在第节下)。您可以在Connect to feed中获取此信息

更多信息,请参阅:开始使用Maven提要和工件

 类似资料:
  • 本文向大家介绍linux系统上传下载命令rz和sz的教程,包括了linux系统上传下载命令rz和sz的教程的使用技巧和注意事项,需要的朋友参考一下 (一)安装方法汇总 1、安装方法(推荐) 2、在安装Linux系统时选中“DialupNetworking Support”组包 3、安装系统联网启动后执行yum直接安装组包 (二)上传下载文件测试 1、条件:需要使用SecureCRT或者Xshell

  • Android SDK 要求 Min Sdk Version - 使用 Glide 需要 min SDK 版本 API 14 (Ice Cream Sandwich) 或更高。 Compile Sdk Version - Glide 必须使用 API 27 (Oreo MR1) 或更高版本的 SDK 来编译。 Support Library Version - Glide 使用的支持库版本为 27

  • 我正在尝试使用C#上传一个word文档到blob存储。代码片段如下: 你知道出什么问题了吗?

  • 我试图用PythonAnywhere和Flask编写一个非常简单的webapp,它允许用户上传文本文件,生成csv文件,然后让用户下载csv文件。不一定要花哨,只要管用就行了。我已经编写了从驱动器上的txt文件生成csv的程序。 现在,我的函数用以下命令打开驱动器上的文件:

  • 我需要创建一个从APIendpoint下载文件并将其上传到另一个APIendpoint的进程。该文件的最大大小为100MB,但我们将有许多进程并行运行。我试图用Spring WebClient实现它,而不需要将文件存储在内存中。当前代码将文件存储在内存中,因为使用大文件的测试会抛出OutofMemoryError。

  • 本文向大家介绍java实现上传和下载工具类,包括了java实现上传和下载工具类的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了文件上传到ftp服务工具类,供大家参考,具体内容如下 直接引用此java工具类就好 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。