Java 如何将Maven依赖项添加到Azure管道
我正在尝试在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中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管道来构建将其部署到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。