具有Gradle属性的Travis CI环境变量

时间:2014-09-24 18:25:56

标签: gradle android-gradle travis-ci sonatype

如何将travis-ci env变量用作Gradle的属性?

我在Gradle路径下本地拥有gradle.properties:

sonatypeRepo = abcd

我的build.gradle使用了哪个:

uploadArchives {   
    //more     
    repository(url: sonatypeRepo) {
        // more
    }
    //more
}

当然它在当地有效。在travis我已经在设置下添加了变量,所以我看到了构建日志:

Setting environment variables from repository settings
$ export sonatypeRepo=[secure]

它失败了:

FAILURE: Build failed with an exception.
* Where:
Build file '/home/travis/build/Diolor/Swipecards/library/build.gradle' line: 49
* What went wrong:
A problem occurred evaluating project ':library'.
> No such property: sonatypeRepo for class: org.gradle.api.publication.maven.internal.ant.DefaultGroovyMavenDeployer

如何将Travis的env变量用作Grable属性还具有本地构建?

2 个答案:

答案 0 :(得分:24)

我也偶然发现了这一点。

这就是我开始工作的方式:

在我的build.gradle中

def uzer = hasProperty('blahUser') ? blahUser : System.getenv('blahUser')
def creds = hasProperty('blahPwd') ? blahPwd : System.getenv('blahPwd')

在我的$ HOME / .gradle / gradle.properties

blahUser=batman
blahPwd=eatsworms

所以我需要这个用于travis-ci - 我不认为它有一个$ HOME / .gradle / gradle.properties的概念但你可以将环境变量添加到.travis.yml。

基本上,正如前面提到的,如果财产是'那么&#39 ;; gradle使用它,否则请求环境。在我的情况下,' hasProperty()'检查是必要的,因此travis不会生成未找到属性的属性.....

... h个

答案 1 :(得分:0)

在下面的示例中,通过从环境中获取值来定义项目属性,而不是局部变量(如果未定义)。

project.ext {
    if (! project.hasProperty('some_prop')) { 
        some_prop = System.getenv('some_prop') 
    }
}

我想要一个项目属性,以便可以在本地和CI中使用它在我的spring-boot YAML文件中设置PW。