настройка конвейера maven для подкаталога в одном хранилище в Azure Repo git - PullRequest
0 голосов
/ 04 ноября 2019

Мы начали работать с репозиторием ADOgit. В рамках этого шага мы хотели бы построить некоторые проекты непосредственно в ado - в качестве первого шага мы решили создать конвейер для стандартного Java-сервера, который построен на maven.

, работающий на ubuntu / windows, которые мы компилируемхорошо, используя следующую команду: mvn package -Dmaven.test.skip=true -e -X, так как новый репозиторий git в ado является единым репо для нескольких проектов, проект java, называемый "ContentResolver", является не корнем репо, а подпрограммой.

как таковой, я изменил файл .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'

, что в значительной степени соответствует тому, что дают вам yml-файл, за исключением того, что я изменяю строки:

mavenPomFile: 'ContentResolver/pom.xml'быть относительными

и mavenOptions: '-Dmaven.test.skip=true', потому что на данный момент ADO не распознает -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)

, что означает, что мне нужно изменить какую-то другую переменную, чтобы указать maven для поиска модели и конфигурации в ContentResolver/src/... вместо непосредственно в src.

я не нашел такой способ. я попытался изменить на следующее:

$ (Agent.BuildDirectory) = ContentResolver

$ (Agent.WorkFolder) = ContentResolver

$ (Build.SourcesDirectory) = ContentResolver

но никто из них мне не помог.

1 Ответ

1 голос
/ 05 ноября 2019

Agent.BuildDirectory, Agent.WorkFolder, Build.SourcesDirectory

Эти переменные , представляющие рабочий каталог, являются системными предопределенными переменными. Они не могут быть изменены или переопределены. Другими словами, даже если вы попытаетесь присвоить им новое значение, ti не будет работать, поскольку они доступны только для чтения:

enter image description here

Вот почему онивсе не работают для вас.


В соответствии с вашим особым сценарием, я думаю, что только конфигурация Azure Devops не может этого достичь. Поскольку каталог .xsd не определен Azure Devops, он зависит только от того, что определено вашим pom.xml. Для конвейера все они имеют рабочий каталог s.

Одним словом, для конвейерного сервера .xsd выглядит следующим образом:

Рабочий каталог Azure Devops + Каталог сборки Pom.xml

Здесь вам нужно подумать о том, чтобы сделать что-то для pom.xml.

Как это doc сказал:

Примером этого являетсяпостроить каталог, который является целью; source directory , то есть src / main / java ; каталог исходного кода теста , который является src / test / java ;и так далее. При выполнении задачи или цели Maven ищет для POM в текущем каталоге .

Если вы хотите, чтобы его путь поиска находился в ContentResolver/src/...,по крайней мере, вам нужно изменить каталог по умолчанию в pom.xml. Как изменить конфигурацию pom.xml, вы можете обратиться к этому потоку .

Только после изменения каталога в pom.xml, затем относительно сервера VSTS, он можетнайдите путь к ../../s/ContentResolver/src/.....

...