gradle - Gradle 3.4:使用ConfigSlurper构建配置文件

标签 gradle groovy build

我在build.gradle中有以下任务,并且我尝试根据环境从wsdlURL中获取config.groovy

loadConfiguration()

task printProps << {
    println "WSDLURL:  $config.wsdlURL"
}

def loadConfiguration() {
    def environment = hasProperty('env') ? env : 'dev'
    System.setProperty('environment', environment)
    println "Environment is set to $environment"

    def configFile = file('config.groovy')
    def config = new ConfigSlurper(environment).parse(configFile.toURI().toURL())
    System.setProperty('config', config) \\line 52
}

以下是我的config.groovy
environments {
    dev {
        wsdlURL = 'https://dev.com/ts/svs.asmx?wsdl'
    }

    qa {
        wsdlURL = 'https://qa.com/ts/svs.asmx?wsdl'        
    }

    stg {
        wsdlURL = 'https://stg.com/ts/svs.asmx?wsdl'        
    }

    prod {
        wsdlURL = 'https://prod.com/ts/svs.asmx?wsdl'
    }
}

当我运行gradle -q -Penv=prod printProps命令时,它失败并显示以下错误
Environment is set to prod

FAILURE: Build failed with an exception.

* Where:
Build file 'build.gradle' line: 52

* What went wrong:
A problem occurred evaluating root project 'SignService'.
> No signature of method: static java.lang.System.setProperty() is applicable fo
r argument types: (java.lang.String, groovy.util.ConfigObject) values: [config,
[wsdlURL:https://prod.com/ts/svs.asmx?wsdl]]
Possible solutions: setProperty(java.lang.String, java.lang.String), getProperty
(java.lang.String), getProperty(java.lang.String, java.lang.String), hasProperty
(java.lang.String), getProperties(), getProperties()

以下是我的环境详细信息
------------------------------------------------------------
Gradle 3.4
------------------------------------------------------------

Build time:   2017-02-20 14:49:26 UTC
Revision:     73f32d68824582945f5ac1810600e8d87794c3d4

Groovy:       2.4.7
Ant:          Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM:          1.8.0_40 (Oracle Corporation 25.40-b25)
OS:           Windows 7 6.1 amd64

似乎gradle无法将groovy对象设置为系统属性,请问有人可以帮助我修复它吗?

最佳答案

错误消息很清楚

System.setProperty(key, value)需要两个String参数,但是您要传递StringConfigObject

也许你想

System.properties['config'] = config

要么
System.properties.put('config', config)

关于gradle - Gradle 3.4:使用ConfigSlurper构建配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44399196/

相关文章:

linux - 有什么方法可以自动调用网络服务吗?

visual-studio - 将 Qt 4.7.2 与 Visual Studio 2010 集成

bash - 如何添加带有属性的gradle exec任务?

android - Gradle 清理构建问题

elasticsearch - Elastic Search Groovy更新错误

java - 如何在katalon studio中将WebElement转换为TestObject?

build - 在另一个项目中调用 gradle "build"任务

Android 4.3 构建错误

gradle - 如何动态地向NamedDomainObjectContainer扩展添加新部分?

gradle - 在上游依赖项已更改时促进语义版本化的工件