【发布时间】:2017-01-25 09:45:38
【问题描述】:
我创建了一个 gradle 脚本,以便使用 cargo 插件在容器上部署可部署:
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”时出现问题。 无法将具有类“org.gradle.api.tasks.bundling.War_Decorated”的对象“任务”:createDevelopmentWar 转换为类“java.lang.Iterable” '
我也尝试将dependsOn 设置为war 任务,但是消息是一样的。
编辑
有一次,我更改了dependsOn = [createDevelopmentWar] 的语法,我又遇到了另一个麻烦:
它让我收到这条消息:
任务“:deployDevWildfly10”执行失败。 可部署的 D:\projects\living\platform\webapi\build\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 {
...
}
}
如何设置 cargo 从之前的 war type task(createDevelopmentWar) 执行信息中提取工件?
【问题讨论】:
标签: gradle