我正在尝试在 Azure Devops 中构建 Maven 构建管道。
我有一个项目,它的文件在其他几个项目之间共享(作为一组微服务项目),因此当我执行此操作时,该项目的 Maven 编译会创建一个 .jar 文件(该文件将添加到我的本地 Maven 存储库 .m2 中)我的笔记本电脑上的构建。我们现在可以将其称为shared.jar。
然后,当我在笔记本电脑上编译微服务时,它们每个都依赖于我的 .m2 存储库中的 jar 文件。他们从那里获取依赖项和 Maven 构建(mvn clean install)。
不幸的是,代码构建管道不维护本地 .m2 存储库。因此,当我尝试对每个微服务执行“mvn clean install”时,它们无法找到shared.jar,因此构建失败。
我已经能够成功地将 .jar 文件添加到 Azure DevOps 下的 Feed 和 Artifact 中,但我似乎不知道如何将其拉入微服务构建中。
如何在 CI/CD Maven 构建管道中获取本地 jar 文件的依赖项并将其放入我的构建将找到的 Maven 存储库中?
我尝试点击此链接:https://learn.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'
请注意,出于安全原因,您的个人访问 token 不存储在版本控制中,这一点很重要,因此必须将其作为安全文件上传并在管道中下载,这会变得很复杂。
将依赖项添加到项目的 pom 中,正常使用它,但也配置了 Azure feed
<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 不太熟悉,所以有些事情可能不正确。例如,我对项目而不是组织范围的提要有问题。请参阅What are the equivalent maven commands and settings to upload and download azure artifacts?
关于java - 如何将 Maven 依赖项添加到 Azure Pipelines,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61511096/