Запустите задачу exec в качестве входных данных для фазы конфигурации - PullRequest
0 голосов
/ 19 декабря 2018

Я хочу написать строку версии в моем файле манифеста, используя Gradle.Для этого я использую git describe.Чтобы получить эту строку, я написал задачу exec:

task gitVersion(type: Exec) {
  commandLine 'git', 'describe'
  standardOutput = new ByteArrayOutputStream()
  ext.output = {
    return standardOutput.toString()
  }
}

Она работает, если я использую ее для обработки ресурсов, например:

processResources {
  dependsOn gitVersion
  filesMatching('build.properties') {
    expand 'buildVersion': "${gitVersion.output()}"
  }
}

К сожалению, это не таксработает, если я попробую это в задаче jar.

jar {
  manifest {
    attributes(
      // Other attributes
      'Implementation-Version': "${gitVersion.output()}" // Not working
    )
  }
}

Как я понял, Gradle Build Lifecycle , это потому, что задача jar - это "фаза конфигурации" иexec Задача "фаза выполнения".

Есть ли способ выполнить задачу exec на этапе настройки?

1 Ответ

0 голосов
/ 19 декабря 2018

Вы можете использовать функцию Groovy «GString lazyvaluation» (см. Некоторые подробности / примеры здесь ):

jar{
    manifest {
        attributes( 
            'Implementation-Version': "${->gitVersion.output()}" // use " ${->prop} syntax for lazy evaluation
        )
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...