2017-01-25 2 views
0

Я создать Gradle скрипт для того, чтобы развернуть развертываемой на контейнере с помощью cargo плагин:Connect войны задача груза развертывания задачи

class RemoteContainer { 
    String name 
    String container 
    String hostname 
    Integer port 
    String username 
    String password 
    String purpose 
} 

def remoteContainers = [new RemoteContainer(
     name: 'wildfly10', 
     container: 'wildfly10x', 
     hostname: 'localhost', 
     port: 9990, 
     username: 'user', 
     password: 'passwd', 
     purpose: 'development' 
    ) 
] 

remoteContainers.each { config -> 
    task "deployDev${config.name.capitalize()}"(type: com.bmuschko.gradle.cargo.tasks.remote.CargoDeployRemote) { 
     description = "Deploys WAR to remote Web Application Server: '${config.name}'." 
     containerId = config.container 
     hostname = config.hostname 
     port = config.port 
     username = config.username 
     password = config.password 
     dependsOn war 
    } 

    task "undeployDev${config.name.capitalize()}"(type: com.bmuschko.gradle.cargo.tasks.remote.CargoUndeployRemote) { 
     description = "Deploys WAR to remote Web Application Server: '${config.name}'." 
     containerId = config.container 
     hostname = config.hostname 
     port = config.port 
     username = config.username 
     password = config.password 
     dependsOn = war 
    } 
} 

Тем не менее, я создал несколько задач для того, чтобы создать пользовательские военные файлы по своим масштабам:

task createQAWar(type: War, dependsOn: classes) { 
    archiveName "webapi-demo-${versioning.info.display}.war" 
    destinationDir = file("$buildDir/dist") 
    webInf { 
     ... 
    } 
} 

task createDevelopmentWar(type: War, dependsOn: classes) { 
    archiveName "webapi-dev-${versioning.info.display}.war" 
    destinationDir = file("$buildDir/dist") 
    webInf { 
     ... 
    } 
} 

task createTestingWar(type: War, dependsOn: classes) { 
    archiveName "webapi-test-${versioning.info.display}.war" 
    destinationDir = file("$buildDir/dist") 
    webInf { 
     ... 
    } 
} 

task createProductionWar(type: War, dependsOn: classes) { 
    archiveName "webapi-prod-${versioning.info.display}.war" 
    destinationDir = file("$buildDir/dist") 
    webInf { 
     ... 
    } 
} 

Я хотел бы связать что deployDev задачи выбрать военный артефакт, выработанный на createDevelopmentWar.

Я попытался установить dependsOn свойство createDevelopmentWar:

remoteContainers.each { config -> 
    task "deployDev${config.name.capitalize()}"(type: com.bmuschko.gradle.cargo.tasks.remote.CargoDeployRemote) { 
     description = "Deploys WAR to remote Web Application Server: '${config.name}'." 
     containerId = config.container 
     hostname = config.hostname 
     port = config.port 
     username = config.username 
     password = config.password 
     dependsOn = createDevelopmentWar <<<<<<<<<<<<<<<<< 
    } 
} 

Тем не менее, Gradle это становится мне это сообщение:

  • Что пошло не так: Возникла проблема оценки корневого проекта 'WebAPI. Невозможно привести объект «задание„: createDevelopmentWar“» с классом «org.gradle.api.tasks.bundling.War_Decorated» в классе «java.lang.Iterable »

Я также попытался установить dependsOn - war Задача, тем не менее сообщение одинаково.

EDIT

Однажды, я изменил синтаксис dependsOn = [createDevelopmentWar], я столкнулся с другой проблемы:

Это становится мне это сообщение:

не было выполнено для task ': deployDevWildfly10'. Deployable D: \ Projects \ живой \ платформа \ WebAPI \ построить \ LIBS \ WebAPI-DEV-89c157a-dirty.war не существует

Он пытается получить артефакт из build\libs\. Тем не менее, война артефакт был создан в destinationDir = file("$buildDir/dist"):

task createDevelopmentWar(type: War, dependsOn: classes) { 
     archiveName "webapi-dev-${versioning.info.display}.war" 
     destinationDir = file("$buildDir/dist") 
     webInf { 
      ... 
     } 
    } 

Как я мог установить груз забирает артефакт по сравнению с ранее war type task(createDevelopmentWar) информации исполнения?

ответ

1

dependsOn = createDevelopmentWar приводит к звонку setDependsOn(createDevelopmentWar), который ожидает Iterable, что задача не такова.

dependsOn createDevelopmentWar приведет к вызову dependsOn(createDevelopmentWar), который ожидает параметр varargs и, следовательно, добавит задание в зависимости.

Если вы действительно хотите заменить все зависимости этой зависимой, вы должны сделать это как dependsOn = [createDevelopmentWar].

+0

Спасибо @ Vampire. Я получаю еще одно сообщение. Он собирает артефакт из неправильной папки. Я редактировал сообщение. Есть идеи? – Jordi

+0

Следуйте за документированием подключаемого модуля.По умолчанию он автоматически обнаруживает развертываемые средства из прикладной задачи 'war' или' ear', но в вашем случае это неприменимо и поэтому не находит файл, который он пытается развернуть. Определите развертывание с вашей собственной войной, и все будет в порядке. Если плагин разработан правильно и вы используете файл (createDevelopmentWar) в качестве файла в развертываемом закрытии, вы даже можете не указывать 'dependOn' явно, но это должно быть сделано неявно. – Vampire

+0

Я могу понять, что вы имеете в виду. Тем не менее, я не совсем понимаю, как изменить сценарий (я новичок, использующий град). Не могли бы вы предоставить мне какой-нибудь код помощи, показывающий, как его получить? – Jordi

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