Java 如何将Maven依赖项添加到Azure管道

Java 如何将Maven依赖项添加到Azure管道,java,maven,azure-devops,azure-pipelines,Java,Maven,Azure Devops,Azure Pipelines,我正在尝试在Azure Devops中构建Maven构建管道 我有一个项目,它的文件在其他几个项目之间共享(作为一组微服务项目),因此当我在笔记本电脑上进行构建时,该项目的maven编译将创建一个.jar文件(添加到本地maven repository.m2中)。我们现在可以称之为shared.jar。 ​ 然后,当我在笔记本电脑上编译微服务时,它们都依赖于.m2 repo中的jar文件。他们从那里获取依赖关系和Maven构建(mvn clean install)。 ​ 不幸的是,代码构建管道没

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

我有一个项目,它的文件在其他几个项目之间共享(作为一组微服务项目),因此当我在笔记本电脑上进行构建时,该项目的maven编译将创建一个.jar文件(添加到本地maven repository.m2中)。我们现在可以称之为shared.jar。 ​

然后,当我在笔记本电脑上编译微服务时,它们都依赖于.m2 repo中的jar文件。他们从那里获取依赖关系和Maven构建(mvn clean install)。 ​

不幸的是,代码构建管道没有维护本地.m2 repo。因此,当我尝试在每个微服务上进行“mvn干净安装”时,他们无法找到shared.jar,因此构建失败。 ​

我已经能够成功地将.jar文件添加到Azure DevOps下的提要和工件中,但我似乎不知道如何将其拉入微服务构建中

如何在CI/CD Maven构建管道中获取本地jar文件的依赖项,并将其放入构建将找到的Maven repo中


我已尝试点击此链接:

请检查以下项目:

  • 确保在运行“mvn clean install”命令时,maven读取 ${user.home}/.m2中settings.xml文件的配置
  • 在标签中检查id、用户名和密码
  • 在运行“mvn清洁安装”之前,请删除所有文件和 文件夹位于.m2文件夹中
  • 通过add-X或运行maven安装命令时启用调试选项 --调试选项

  • 请检查以下项目:

  • 确保在运行“mvn clean install”命令时,maven读取 ${user.home}/.m2中settings.xml文件的配置
  • 在标签中检查id、用户名和密码
  • 在运行“mvn清洁安装”之前,请删除所有文件和 文件夹位于.m2文件夹中
  • 通过add-X或运行maven安装命令时启用调试选项 --调试选项

  • 我们通过使用单独的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>
    
    
    
    等等
    

    我们通过使用单独的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>
    
    
    
    等等
    

    我不知道我是否说得很清楚,但在我的笔记本电脑上运行的mvn clean安装非常好。jar文件被构建并保存在my local.m2中。然后,当我在micro服务上运行mvn clean install时,他们会从我的依赖项中获取它。我无法在Azure Devops管道中运行它(那里没有持久化的local.m2)。所以微服务的构建无法访问我的jar文件。@JimPassmore您是否使用“mvn deploy”到工件部分正确部署了jar文件?我相信是这样。工件被添加,并且在Azure Devops工件中可见,问题似乎在于它只是将jar文件放入。这不是真正的专业回购。它似乎没有在本地添加.m2目录中的其他内容(如元数据)。因此,当我试图编译使用该jar的服务时,我得到:找不到元数据com.xxx.service:yyy shared:0.0.1-SNAPSHOT/maven-metadata.xml在本地(/home/vsts/.m2/repository)。我不知道我是否清楚这一点,但在我的笔记本电脑上运行的mvn clean安装非常有效。jar文件被构建并保存在my local.m2中。然后,当我在micro服务上运行mvn clean install时,他们会从我的依赖项中获取它。我无法在Azure Devops管道中运行它(那里没有持久化的local.m2)。所以微服务的构建无法访问我的jar文件。@JimPassmore您是否使用“mvn deploy”到工件部分正确部署了jar文件?我相信是这样。工件被添加,并且在Azure Devops工件中可见,问题似乎在于它只是将jar文件放入。这不是真正的专业回购。它似乎没有在本地添加.m2目录中的其他内容(如元数据)。因此,当我试图编译使用该jar的服务时,我得到:在本地(/home/vsts/.m2/repository)中找不到元数据com.xxx.service:yyy shared:0.0.1-SNAPSHOT/maven-metadata.xml。