java - 如何将 Maven 依赖项添加到 Azure Pipelines

标签 java maven azure-devops azure-pipelines

我正在尝试在 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/

相关文章:

java - 如何更改具有特定列值的 JTable 整行的颜色

java - 如何过滤掉List<A>的元素,让List<A>只包含distinct A.getId()的元素?

TFS Visualstudio.com 打印或导出?

azure - 是否可以在 Azure DevOps 中对每个项目进行成本分析?

azure - 如何在azure devops api服务中传递具有多个值的对象参数

java - lambda 表达式中的错误返回类型无法将 Object 转换为 T

java - 如何使用 m2e-code-quality 在 maven-pmd 插件中使用 sonar pmd 永久链接?

maven - SonarQube 中未显示单元测试结果

java - 如何使用 Maven 避免 EAR/WAR 中派生依赖项的重复?

java - 为什么在 while 循环中行会重复出现?