【发布时间】:2022-10-05 13:10:53
【问题描述】:
我对使用 Java Maven 和缓存的 Azure devops Pipeline 有疑问。当我更改自定义依赖项中的文件时,Azure devops 不会更新缓存。
我使用 Azure devops 工件来存储创建的工件。
我有一个基本的 Java 应用程序,我们称之为:nl.company.toolS
我有一个名称为:nl.mycompany.dependencyB
Dependency nl.mycompany.dependencyB 通过 pom.xml 包含在基本 Java 应用程序中
这是我的 Azure devops 管道代码:
# Maven
variables:
MAVEN_CACHE_FOLDER: $(Pipeline.Workspace)/.m2/repository
MAVEN_OPTS: '-Dmaven.repo.local=$(MAVEN_CACHE_FOLDER)'
pool:
vmImage: ubuntu-latest
steps:
- task: DownloadSecureFile@1
name: settings_xml
displayName: Download settings.xml
inputs:
secureFile: 'settings.xml'
- task: Cache@2
inputs:
key: 'maven | "$(Agent.OS)" | **/pom.xml'
restoreKeys: |
maven | "$(Agent.OS)"
maven
path: $(MAVEN_CACHE_FOLDER)
displayName: Cache Maven local repo
- task: Maven@3
inputs:
mavenPomFile: 'pom.xml'
goals: 'deploy'
options: '-s $(settings_xml.secureFilePath)'
publishJUnitResults: true
testResultsFiles: '**/surefire-reports/TEST-*.xml'
javaHomeOption: 'JDKVersion'
jdkVersionOption: '1.8'
mavenVersionOption: 'Default'
mavenOptions: '-Xmx3072m $(MAVEN_OPTS)'
mavenAuthenticateFeed: false
effectivePomSkip: false
sonarQubeRunAnalysis: false
我的依赖 nl.mycompany.dependencyB 有一个文件:sharedModule/cdm.dwl,它经常需要更新。
首先,我使用 Azure Devops 管道构建我的基本 Java 应用程序,上面的代码和插入的 Junit 测试运行良好。
然后我更新依赖中的 cdm.dwl 文件 然后我使用上面的代码使用 Azure devops 构建依赖项。
然后我再次使用 Azure devops 构建了基本的 Java 应用程序,Junit 测试再次运行良好,但他们应该给出错误,因为 cdm.dwl 文件已更改。
当我下载 JAR 文件并检查包含的依赖项的内容时,没有更新的 cdm.dwl 文件,因此 Azure devops 不会更新缓存。
当我删除管道 yaml 文件中的 Cache@2 任务时,完全没有问题。
我怎样才能解决这个问题 ?
【问题讨论】:
标签: java maven azure-devops azure-pipelines