首页 > 解决方案 > 如何将 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

标签: javamavenazure-devopsazure-pipelines

解决方案


为此,我们有一个单独的 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 命令和设置是什么?


推荐阅读