2016-09-06 2 views
1

Я это две задачи:выполнить одну задачу Gradle

war { 
    webInf { from 'src/main/resources/WEB-INF' } 
    manifest { 
     attributes 'Implementation-Version': versioning.info.display 
    } 
} 

task createDemoWar(type: War, dependsOn: classes) { 
    archiveName "webapi-demo-${versioning.info.display}.war" 
    destinationDir = file("$buildDir/dist") 
    copy { 
     from 'scopes' 
     include 'configuration.demo.properties' 
     into 'src/main/resources/' 
    } 
} 

task createDevelopmentWar(type: War, dependsOn: classes) { 
    archiveName "webapi-dev-${versioning.info.display}.war" 
    destinationDir = file("$buildDir/dist") 
    copy { 
     from 'scopes/' 
     include 'configuration.development.properties' 
     into 'src/main/resources/' 
    } 
} 

Обе задачи пытаются скопировать файл свойств из scopes папки в папку src/main/resources/.

Я только запустить одну задачу, однако две файлы копируются в src/main/resources/ (configuration.demo.properties и configuration.development,properties.

Любые идеи?

ответ

1

используется две спецификации копирования на этапе конфигурации (примечание, копия спецификации в этом случае не настраивает свою задачу, но добавить некоторые дополнительные действия для его конфигурации) это означает, что ваши файлы становятся скопированы во время конфигурации это все из-за этого:..

copy { 
    ... 
} 

Вы должны запустить его во время выполнения, чтобы сделать это, попробуйте переместить его в doLast или doFirst закрытия, например, так (для обеих задач):

task createDemoWar(type: War, dependsOn: classes) { 
    archiveName "webapi-demo-${versioning.info.display}.war" 
    destinationDir = file("$buildDir/dist") 
    doFirst { 
     copy { 
      from 'scopes' 
      include 'configuration.demo.properties' 
      into 'src/main/resources/' 
     } 
    } 
} 

В этом случае файлы будут скопированы только если задача будет исполнена непосредственно перед исполнением.

+0

Это действительно странно такое поведение, не так ли? Я понятия не имел о настройке выполнения ... фаз. Не могли бы вы получить мне ссылку, чтобы немного узнать об этом? – Jordi

+0

Вначале это может показаться немного странным, но тогда вы это осознаете, становится очень ясно. Вы можете прочитать о жизненном цикле сборки в официальном руководстве пользователя https://docs.gradle.org/current/userguide/build_lifecycle.html – Stanislav

+0

Спасибо. Тем не менее, у меня есть задача: 'task createDists (dependsOn: [createDemoWar, createDevelopmentWar])'. Когда я запускаю задачу 'createDists', генерируются две войны, однако любой файл находится в' src/main/resources' – Jordi

Смежные вопросы