java - 如何将 Maven 依赖项添加到 Azure Pipelines
问题描述
我正在尝试在 Azure Devops 中构建一个 Maven 构建管道。
我有一个项目,它的文件在其他几个项目之间共享(作为一组微服务项目),所以当我在我的笔记本电脑。我们现在可以称它为 shared.jar。</p>
然后,当我在笔记本电脑上编译微服务时,它们每个都依赖于我的 .m2 存储库中的 jar 文件。他们从那里获取依赖项和 Maven 构建(mvn clean install)。</p>
不幸的是,代码构建管道不维护本地 .m2 存储库。因此,当我尝试对每个微服务执行“mvn clean install”时,它们无法找到 shared.jar,因此构建失败。</p>
我已经能够成功地将 .jar 文件添加到 Azure DevOps 下的 Feed 和 Artifact,但我似乎无法弄清楚如何将其拉入微服务构建中。
如何在我的 CI/CD Maven 构建管道中获取本地 jar 文件的依赖项并将其放入我的构建将找到的 maven 存储库中?
我试图点击这个链接: https ://docs.microsoft.com/en-us/azure/devops/artifacts/get-started-maven?view=azure-devops
解决方案
为此,我们有一个单独的 azure 管道来构建将其部署到 Azure 提要的依赖项:
variables:
- name: mavenRepoURL
value: 'https://myorg.pkgs.visualstudio.com/myproject/_packaging/myfeed/maven/v1'
- task: DownloadSecureFile@1
name: mvnSettings
displayName: 'Download Maven settings'
inputs:
secureFile: 'maven-azuredevops-settings.xml'
- task: MavenAuthenticate@0
displayName: Maven Authenticate Artifacts
inputs:
artifactsFeeds: 'myfeed'
- task: Maven@3
inputs:
mavenPomFile: 'pom.xml'
options: '-X -B -s $(mvnSettings.secureFilePath) -DWHERE="AzureDevops" -DremoteRepositories=$(mavenRepoUrl) clean deploy -U'
mavenAuthenticateFeed: true
publishJUnitResults: true
testResultsFiles: '**/TEST-*.xml'
请注意,出于安全原因,您的个人访问令牌不存储在版本控制中很重要,因此必须将其作为安全文件上传并在管道中下载它的复杂性。
将依赖项添加到项目的 pom 中,正常使用它,但也配置了 Azure 提要
<dependency>
<groupId>com.foobar.blah</groupId>
<artifactId>artifactId</artifactId>
<version>2.0.2</version>
</dependency>
<profile>
<id>AzureDevops</id>
<activation>
<property>
<name>WHERE</name>
<value>AzureDevops</value>
</property>
</activation>
<properties>
</properties>
<distributionManagement>
<repository>
<id>myfeedname</id>
<url>https://myorg.pkgs.visualstudio.com/_packaging/myfeed/maven/v1</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</distributionManagement>
</profile>
警告:我对 Maven 或 Azure 不太熟悉,所以有些事情可能不对。例如,我对项目而不是组织范围的提要有问题。请参阅上传和下载天蓝色工件的等效 Maven 命令和设置是什么?
推荐阅读
- postgresql - 在 CI 上运行 cypress 时执行 postgres 初始化脚本
- laravel - 分页必须返回 206 而不是 200
- rdf - How are blank nodes used in the context of understanding RDF triple statements?
- reactjs - 如何在没有 authProvider 的情况下使用注销按钮
- pandas - python中pandas中的数据框
- linux - 脚本内批准屏幕,尽管已获得批准,但仍显示签名以供批准
- snakemake - 与工作流一起运行的守护进程?
- amazon-web-services - AWS Route53:重定向域而不更改浏览器中的 URL
- dialogflow-es - Dialogflow Fulfillment - 多种意图
- webpack - Webpack 包分析器:需要适当的加载器来处理此文件类型错误