2014-09-01 62 views
3

是否可以聲明或更改通過gradle代碼訪問的Java變量?如何通過gradle腳本聲明/更改Java變量

我找到了Is it possible to declare a variable in Gradle usable in Java?,它告訴我如何聲明可通過Java代碼訪問Android項目的變量。

是否有可能對「正常」的Java項目做同樣的事情?我想根據執行哪個任務設置一個變量。

感謝您的幫助!

+0

一個常見的解決方案是生成/解迷資源文件(例如,屬性文件)並從Java代碼中讀取。 – 2014-09-01 21:27:50

+0

@PeterNiederwieser我已經想過,但我沒有找到一個解決方案:(你有一個代碼片段或片段本身的參考嗎?非常感謝! – Chris 2014-09-01 21:34:47

+0

http://chimera.labs.oreilly。 com/books/1234000001741/ch01.html#_keyword_expansion不是聲明一個新的'Copy'任務,而是配置Java插件的'processResources'任務。 – 2014-09-01 21:41:09

回答

4

感謝@PeterNiederwieser我解決我的問題:

在我gradle.build我使用:

task usernameMaxio(type: Copy) { 
    from 'src/main/resources/properties' 
    into 'build/resources/main/properties' 
    expand([ 
    username: 'Maxio' 
    ]) 
} 

,我通過訪問:

Properties properties = new Properties(); 
ClassLoader loader = Thread.currentThread().getContextClassLoader(); 
InputStream stream = loader.getResourceAsStream("properties/app.properties"); 
try { 
    properties.load(stream); 
} catch (IOException | NullPointerException e) { 
    WebOptionPane.showMessageDialog(null, "Couldn't read app.properties", "Fehler", 
            WebOptionPane.ERROR_MESSAGE); 
    e.printStackTrace(); 
    return; 
} 
name = properties.getProperty("username"); 

在我app.properties:

username=${username}