2016-03-03 5 views
0

Я определил задачу, которая читает файл свойства и обновляет определенное поле. Я хочу, чтобы это запускалось только при выполнении 'release', а не во время 'build'.Как исключить задачу или метод градации во время сборки

Я использую этот Gradle-релиз плагин для выпуска: https://github.com/researchgate/gradle-release

Этот плагин обновляет версию в файле gradle.properties до следующей версии, на каждом выпуске. Мне также нужно сохранить текущий номер версии, и поэтому я написал этот метод.

Однако эта задача выполняется, когда я делаю сборку. Я попытался изменить его на метод и вызвать метод в 'uploadArchives', который, как я полагаю, запускается только во время 'release'. Но результата нет. Он продолжает выполнять каждую сборку!

Как я могу исключить его из 'build' и вызывать его только в случае выпуска?

Вот задача, и некоторые фрагменты кода:

task restoreCurrentVersion { 
    try { 
     String key = 'currentVersion' 
     File propertiesFile = project(':commons').file("gradle.properties") 
     String currentVersion = project(':commons').version 
     this.ant.replaceregexp(file: propertiesFile, byline: true) { 
      regexp(pattern: "^(\\s*)$key(\\s*)=(\\s*).+") 
      substitution(expression: "\\1$key\\2=\\3$currentVersion") 
     } 
    } catch (BuildException be) { 
     throw new GradleException('Unable to write version property.', be) 
    } 
} 

uploadArchives { 
    repositories.mavenDeployer { 
     repository(url: 'file://Users/my.home/.m2/repository/') 
    } 
// restoreCurrentVersion() //Uncommenting this makes the method (when converted the above task to a method) to execute always 
} 

createReleaseTag.dependsOn uploadArchives  
ext.'release.useAutomaticVersion' = "true" 

ответ

1
  1. Вы должны добавить << или doLast блок к вашему определению задач. В противном случае он будет работать во время фазы конфигурации, что почти всегда при каждом запуске любой другой задачи. смотрите здесь: Why is my Gradle task always running?

  2. Там нет Gradle способа вызова/вызова задачи из другой задачи непосредственно, как вы пытались сделать в uploadArchives вместо этого использовать dependsOn или finalizedBy зависимости задачи настройки. Если uploadArchives зависит от restoreCurrentVersion, restoreCurrentVersion будет вызываться сначала каждый раз, когда вызывается uploadArchives.