鍍金池/ 問答/Java  Scala  HTML/ 使用gradle構(gòu)建java項目,如何在build文件中使用變量

使用gradle構(gòu)建java項目,如何在build文件中使用變量

最近在打包發(fā)布的時候遇到了一個問題,項目中有很多資源是在工程目錄外的,而且好幾個工程都用這一份資源。
在build.gradle中我用sourceSet指定了資源目錄,然后再代碼中用classLoder.getresource獲取文件內(nèi)容。
然后就產(chǎn)生了問題,因為我寫代碼和發(fā)布不在一個環(huán)境,發(fā)布要在linux上,那我不想每次都修改build文件,怎么才能在gradle.build的時候或者在build文件中使用變量呢。

apply plugin: 'java'

sourceSets {
     main {
         java{
            srcDir "src"
         }
         resources {
             srcDir 'resource'
             srcDir'D:/demo/server/resource/xml'
             srcDir 'D:/demo/server/resource/sensitive'
         }
     }
 }

tasks.withType(JavaCompile) {
    options.encoding = "UTF-8"
}

dependencies {
    compile fileTree(dir: '../resource/libs', include:  '*.jar')
}

build{
    doLast {
        copy {
            from('build/libs') {
                      include('*.jar')
                        }
                        into('../../release/bin')
        }
    }
}
回答
編輯回答
只愛你

Gradle 用的是Groovy語言,加一些DSL, Groovy幾乎完成兼容Java, 所以如果你會Java(既然是java項目), 你完全可以在build.gradle里用你所會的java全部技能,按java語法聲明和使用變量即可

2017年3月3日 01:10
編輯回答
慢半拍

不想改配置文件你還可以用環(huán)境變量啊。gradle使用groovy DSL做配置文件,因此你完全可以寫groovy代碼實現(xiàn)。

String myProperty = System.getenv("MY_PROPERTY") ?: "defaultValue"

如果你傾向使用System property覆蓋默認配置,可以用gradle的properties配置默認參數(shù),并且在gradle命令行上使用-PGRADLE_PROPERTY=newValue覆蓋。比如:

gradle.properties:

myProperty = defaultValue

build.gradle:

println myProperty

使用gradle(w) -PmyProperty=newValue tasks覆蓋。這種用法詳見: https://docs.gradle.org/curre...

2017年4月2日 20:23
編輯回答
孤島

問問android同學,怎么build的出debug-apk和release-apk的

2017年10月13日 12:50