У меня есть сборка gradle, которая создает несколько файлов войны, по одному для каждой среды, определенной в каталоге конфигурации. Например, следующая структура каталогов приведет к 3 войнам:
cfg
- dev
- application.properties
- log4j.properties
- staging
- application.properties
- log4j.properties
- production
- application.properties
- log4j.properties
Версия приложения находится в файле gradle, а также в application.properties
файлах под ключом app.version
. Я хотел бы сохранить версию только в build.gradle
и скопировать значение в файлы application.properties при сборке.
Фрагмент моего скрипта Gradle, который создает и выполняет сборки, приведен ниже. Я пробовал несколько подходов, включая задачу ant.replace
для копирования версии (включенной в сценарий), но я не могу найти правильную ссылку на файл application.properties, чтобы заставить это работать. Я также рад принять любые другие подходы к построению войн.
// generate package* tasks for all defined configurations
files { file('cfg').listFiles() }.each {
File file -> if (file.name != 'common' && file.name != '.svn') {
tasks.create(name: "package$file.name", type: War, dependsOn: classes) {
classifier = file.name
from("./cfg/$file.name") {
into("WEB-INF/classes")
include "**/*"
}
ant.replace(file:"WEB-INF/classes/application.properties", token:"@appVersion", value:project.version)
}
}
}
// run all assemble tasks
task dist (dependsOn: tasks.matching { Task task -> task.name.startsWith("package") })