我们开始使用ADOgit回购。作为此举的一部分,我们希望直接在ado中构建一些项目-作为第一步,我们决定为使用maven构建的标准Java Server创建管道。
在ubuntu / windows上工作,我们可以使用以下命令进行编译:{{1}} 由于ado中的新git repo是多个项目的单个仓库,因此名为“ ContentResolver”的java项目不是仓库的根目录,而是子目录。
这样,我已经将.yml文件修改如下:
mvn package -Dmaven.test.skip=true -e -X
几乎是他们给您的yml文件,请注意,我更改了行:
# Build your Java project and run tests with Apache Maven.
# Add steps that analyze code, save build artifacts, deploy, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/java
trigger:
- master
pool:
vmImage: 'ubuntu-latest'
steps:
- task: Maven@3
inputs:
mavenPomFile: 'ContentResolver/pom.xml'
mavenOptions: '-Dmaven.test.skip=true'
javaHomeOption: 'JDKVersion'
jdkVersionOption: '1.7'
jdkArchitectureOption: 'x64'
publishJUnitResults: true
testResultsFiles: '**/surefire-reports/TEST-*.xml'
goals: 'package'
是亲戚
和mavenPomFile: 'ContentResolver/pom.xml'
因为现在ADO无法识别mavenOptions: '-Dmaven.test.skip=true'
,但是我稍后会解决。
以及日志本身的路径:
-e -X
Failed to read schema document 'file:/home/vsts/work/1/s/src/main/resources/model.xsd'
这意味着我需要更改一些其他变量以使行家在/home/vsts/work/1/s/src/main/resources/configuration.xsd (No such file or directory)
中而不是直接在src中查找模型和配置。
我还没有找到这样的方法。我试图更改为以下内容:
$(Agent.BuildDirectory)= ContentResolver
$(Agent.WorkFolder)= ContentResolver
$(Build.SourcesDirectory)= ContentResolver
但这些都没有帮助我。
答案 0 :(得分:1)
Agent.BuildDirectory,Agent.WorkFolder,Build.SourcesDirectory
这些variables代表工作目录,都是系统预定义的变量。它们不能被修改或覆盖。换句话说,即使您尝试为它们分配一个新值,ti也将因为其只读而无法工作:
这就是为什么它们都不适合您的原因。
根据您的特殊情况,我认为仅Azure Devops的配置无法实现这一目标。因为.xsd
的目录不是由Azure Devops决定的,所以它仅取决于pom.xml
的定义。对于管道,它们的所有工作目录都是s
文件夹。
对于管道服务器,总而言之,.xsd
外观路径的结构如下:
Azure Devops工作目录 + Pom.xml构建目录
在这里,您需要考虑对pom.xml
做一些事情。
正如doc所说:
示例是构建目录,它是目标; 来源 目录,即 src / main / java ; 测试源目录,即 src / test / java ;等等。执行任务或目标时, Maven看上去 用于当前目录中的POM 。
如果至少希望其查找路径位于ContentResolver/src/...
中,则需要在pom.xml
中更改默认目录。对于如何更改pom.xml配置,可以参考此thread。
仅在更改pom.xml
中的目录之后,然后相对于VSTS服务器,它才能找到../../s/ContentResolver/src/....
的路径。