Передача свойств в ANT build.xml файл

#azure #azure-devops

#azure #azure-devops

Вопрос:

Я новичок в Stack Overflow и Azure.

Я хочу несколько репозиториев в одном проекте. Многие репозитории будут иметь исходный код, который часто меняется (repoX), и один с большими файлами jar, которые меняются редко (repo2). Repo2 будет использоваться для сборки ANT в разных репозиториях. В конвейере Azure для repoX я хочу передать путь repo2 к build.xml это путь к классу, и, похоже, не удается найти правильный синтаксис. Я знаком с ANT, просто нужен синтаксис. В справке Azure показано несколько способов настройки свойств сборки, таких как переменные, env и т.д.

Спасибо за вашу помощь.

Ответ №1:

Большое вам спасибо за вашу помощь. Я смог передать параметр в свой файл сборки. Я не смог заставить работать задачу замены токена (я думаю, что она устарела), но поскольку свойства ANT неизменяемы, когда я устанавливаю переменную classpath в ПАРАМЕТРАХ задачи ANT, она была выбрана в файле сборки. Вот мой конвейер:

 trigger:
- master

pool:
  vmImage: 'ubuntu-latest'

resources:
  repositories:
  - repository: THE_JDK
    type: git
    name: FOLDER/THE_JDK

steps:
- checkout: self
- checkout: THE_JDK
- script: |
    echo $(Build.SourcesDirectory)
    ls $(Build.SourcesDirectory) *
    
- powershell: Write-Host "##vso[task.setvariable variable=jdk.home;]$(Build.SourcesDirectory)/THE_JDK"    

- task: Ant@1
  inputs:
    buildFile: 'trunk/TheApp/build/build.xml'
    options: -Djdk.home=$(jdk.home)
    targets: 'dist-trunk'
    javaHomeOption: 'JDKVersion'
    jdkVersionOption: '1.8'
    jdkArchitectureOption: 'x64'
    publishJUnitResults: true
    testResultsFiles: '**/TEST-*.xml'
  

Комментарии:

1. Приятно видеть, что ваша проблема решена. Вы могли бы принять это как ответ , как только сможете, это может быть полезно для других участников сообщества, читающих эту тему.

Ответ №2:

Что вы можете попробовать, так это использовать проверку нескольких репозиториев

 resources:
  repositories:
    - repository: devops
      type: github
      name: kmadof/devops-templates
      endpoint: kmadof

steps:
- checkout: self
- checkout: devops
- script: |
    echo $(Build.SourcesDirectory)
    ls $(Build.SourcesDirectory) *
  

Здесь мы оформляем два репозитория, один из которых будет отправлен в devops-manual папку (self repo, в вашем случае это должно быть repoX), а другой — в devops-templates папку (repo2 в вашем случае).

Теперь вы должны назначить путь к repo2 в переменной. Для этого вам следует использовать команду ведения журнала:

 - powershell: Write-Host "##vso[task.setvariable variable=repoxpath;]$(Build.SourcesDirectory)/devops-templates"
  

Теперь мы должны обновить build.xml с помощью path, и поэтому я рекомендую использовать Replace Token task

 - task: replacetokens@3
  inputs:
    targetFiles: '<path-t-your-build.xml-file>'
    encoding: 'auto'
    writeBOM: true
    actionOnMissing: 'warn'
    keepToken: false
    tokenPrefix: '#{'
    tokenSuffix: '}#'
    useLegacyPattern: false
    enableTelemetry: true
  

В том месте, где вы хотите указать путь, у вас должен быть этот токен #{repoxpath}#