2014-06-13 167 views
5

我正在使用heroku的config var插件(請參閱https://devcenter.heroku.com/articles/config-vars)。添加單個文件到gradle資源

它允許我使用.env文件,我不推送源代碼控制來定義heroku環境。

所以當我在heroku上時,我可以通過System.properties訪問合理的信息。

在開發中,我想從這個文件中讀取,所以最好是如果它在我的類路徑中。

的.ENV文件是在我的項目的根,所以我不能使用這樣的:

sourceSets { 
    main { 
     resources { 
      srcDirs = ['src/main/resources', '/'] 
     } 
    } 
} 

什麼是包含一個文件到gradle這個資源最簡單的方法?

回答

1

我最終什麼事做的是增加項目的根目錄下的資源文件夾只包含我感興趣的文件:

sourceSets.main.resources { srcDir file('.') include '.env' } 

似乎這樣的伎倆。我不知道這是最好的解決方案以爲

+0

如果我有多於一個目錄,如'A,B,C',對於dir'C',我只需要'C/my.properties',但對於'A'和'B',我需要所有文件 – enyo

+0

如果你想在罐子裏給它另一個名字,你會做什麼? –

+2

該解決方案的工作原理是,但是(如上所述),「包含」模式被用於所有srcDirs,而不僅僅是一個。我想知道如何將一個文件添加到現有的srcDirs中。 – Marwin

3

與其他網站的另一個祕訣在這裏合併以前的回答後,我想出了以下解決方案:

sourceSets { 
    specRes { 
    resources { 
     srcDir 'extra-dir' 
     include 'extrafiles/or-just-one-file.*' 
    } 
    } 
    main.resources { 
    srcDir 'src/standard/resources' 
    srcDir specRes.resources 
    } 
} 
processResources { 
    rename 'some.file', 'META-INF/possible-way-to-rename.txt' 
} 

我仍然不知道是否有一些更好的辦法。

+1

這樣做的副作用是也添加了一個新的'specResClasses'任務,這可能不是您想要的。我在Gradle論壇上重複了這個問題,看看有沒有更好的方法:https://discuss.gradle.org/t/how-to-add-a-single-extra-resource-to-the-existing-資源/ 17070 – whaleberg

1

早先的答案似乎比我所希望的更復雜,所以我詢問了gradle forums,並得到了來自Gradle核心開發人員之一的Sterling Green的回覆。

他建議直接配置processResources

processResources { 
    from(".env") 
} 

他還提到,它可能是一個壞主意,包括項目的根直接輸入。