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

时间:2020-04-29 20:29:29

标签: java maven azure-devops azure-pipelines

我正在尝试在Azure Devops中构建Maven生成管道。

我有一个项目,该项目具有彼此共享的文件(作为一组微服务项目),因此当我执行该项目的maven编译时,会创建一个.jar文件(已添加到我的本地maven存储库.m2中)。我笔记本电脑上的版本。我们现在可以将其称为shared.jar。

然后,当我在笔记本电脑上编译微服务时,它们每个都依赖于.m2存储库中的jar文件。然后,他们从那里获取依赖关系并进行Maven构建(MVN全新安装)。

不幸的是,代码构建管道无法维护本地.m2存储库。因此,当我尝试在每个微服务上执行“ mvn全新安装”时,它们无法找到shared.jar,因此构建失败。

我已经能够将.jar文件成功添加到Azure DevOps下的Feed和Artifact中,但是我似乎无法弄清楚如何将其添加到Micro Services Build中。

我如何在CI / CD Maven构建管道中获取本地jar文件的依赖关系,并将其放入构建将找到的Maven存储库中?

我尝试点击此链接:https://docs.microsoft.com/en-us/azure/devops/artifacts/get-started-maven?view=azure-devops

2 个答案:

答案 0 :(得分:1)

为此,我们通过一个单独的Azure管道来构建依赖项,并将其部署到Azure feed:

       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 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?

答案 1 :(得分:0)

请检查以下项目:

  1. 确保在运行“ mvn clean install”命令时,maven读取 来自$ {user.home} /。m2中的settings.xml文件的配置。
  2. 检查带有<server></server>标签的ID,用户名和密码。
  3. 请先运行“ mvn clean install”,然后删除所有文件并 .m2文件夹中的文件夹。
  4. 通过添加-X或运行maven install命令时
  5. 启用调试选项 --debug选项。