Я пытаюсь иметь несколько задач Gradle в моем файле build.gradle
для развертывания войны в разных средах. Я хочу иметь возможность иметь задачу deployToLocal
вместе с deployToQA
и deployToDev
после создания файла войны.
Конечно, это означает, что я хочу остановить службу Tomcat, удалить существующие файлы войны и расширенные войны в каталоге веб-приложений Tomcat, скопировать войну и снова перезапустить Tomcat, чтобы развернуть службу.
Мой вопрос двоякий:
- Я указал местоположение войны, которую я буду копировать вместе со всей информацией об имени хоста, порте и имени пользователя/пароле. Мой вопрос: как мне указать, в какое место в удаленных средах (структура каталогов) должна быть скопирована война?
- Что касается цели, которую я пытаюсь достичь, это правильный путь для продвижения вперед?
Мой код до сих пор:
task deleteDirLocalhost(type: Delete){
//delete fileTree(dir: local_Tomcat_webapps_dir)
delete fileTree(dir: 'C:\\Tomcat7.0\\webapps')
}
task deployToLocal{
dependsOn war, tomcatStop, deleteDirLocalhost
println "Starting Cargo"
println "Using war from: $warLocation" // warLocation is a variable defined in gradle.properties file
cargo {
containerId = 'tomcat7x'
port = TomcatPortLocalhost as Integer
local {
homeDir = file(local_Tomcat_webapps_dir) // local_Tomcat_webapps_dir is a variable defined in gradle.properties file
}
deployable {
file = file(warLocation) // This is where I specify where the war file is to be copied from. In the 'local' section, I have specified 'homeDir' as the location where I want this file to be copied to. Is that correct usage?
context = 'web-application'
}
}
tomcatRunWar
}
task deployToQA{
dependsOn war, tomcatStop, deleteDirQA
println "Starting Cargo"
println "Using war from: $warLocation"
cargo {
containerId = 'tomcat7x'
port = TomcatPortQA as Integer
remote {
hostname = server_address_qa // all these are variables defined in the gradle.properties file
username = username_qa
password = password_qa
}
deployable {
file = file(warLocation) // This is where I specify the location of the war file. How do I specify in the 'remote' section in which directory in the server this file should be copied to?
context = 'web-application'
}
}
tomcatRunWar
}
task deployToDev{
dependsOn war, tomcatStop, deleteDirDev
println "Starting Cargo"
println "Using war from: $warLocation"
cargo {
containerId = 'tomcat7x'
port = TomcatPortDev as Integer
remote {
hostname = RT3_webapp_address_dev
username = username_dev
password = password_dev
}
deployable {
file = file(warLocation)
context = 'web-application'
}
}
tomcatRunWar
}
Я хочу вызвать задачу gradle deployToLocal
и ожидать поведения, при котором локальный экземпляр Tomcat останавливается, война копируется в мою папку Tomcat\webapps (при этом все ранее существовавшие файлы или папки в той же папке были удалены), а затем служба Tomcat снова началось, и война развернута.
Это не работает, и, очевидно, я что-то упускаю. Я также искал в Интернете надежный полностью проработанный пример реализации плагина Gradle Cargo/Tomcat без особой удачи. Может ли кто-нибудь указать мне правильное направление?
Спасибо заранее за любую помощь!