2012-10-02 31 views
2

我有子項目的gradle - 包括JAR不進行過濾二進制換行符

A/B 的A/C

(B和C子項目)項目甲。 B和C被編譯成一個Jar文件。使用下面的代碼。

gradle.taskGraph.whenReady { 
    jar { 
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } 

    manifest { 
     attributes("Main-Class": "brut.apktool.Main") 
    } 
    } 
} 

這工作正常,但我有/a/b/src/main/resources/prebuilt.jar預建的JAR。這個jar只是封裝了我在程序中需要的一些隨機文件。沒有任何Java或任何東西。我搶他們的inputStream,但與搖籃建成後其轉換二進制換行符數據,然後攪亂存檔。

我試圖用建立了一個CopyTask複製後的罐子,但我無法讓自己一個任務之前gradle.TaskGraph.whenReady運行。

早在Maven的。我只是禁用該文件的過濾,但無法在Gradle中找到相同的表達式。

編輯:這是我目前做的,它過濾我變成屬性文件,但不這樣做我換行過濾。

processResources { 
    ext.fullrev = '' 
    ant.loadfile(srcFile: "../../.git/refs/heads/master", property: ext.fullrev) 
     filter(FixCrLfFilter) 
    filter(org.apache.tools.ant.filters.ReplaceTokens, tokens: [version: apktoolversion, gitrev: ant.properties[ext.fullrev].substring(0,10)]) 
} 
+0

你有沒有配置一般'A/B'的jar任務過濾器? –

+0

是的。我試圖將它添加到像(剛編輯和上面顯示)。 –

回答

1

很好解決了它。對於未來的谷歌。

processResources { 
    from('src/main/resources/properties') { 
     include '**/*.properties' 
     into 'properties' 
     ext.fullrev = '' 
     ant.loadfile(srcFile: "../../.git/refs/heads/master", property: ext.fullrev) 
     filter(ReplaceTokens, tokens: [version: apktoolversion, gitrev: ant.properties[ext.fullrev].substring(0,10)]) 
    } 
    from('src/main/resources/') { 
     include '**/*.jar' 
    } 

    includeEmptyDirs = false 
} 

很簡單的解釋。如果文件落入我的* .properties包括,那麼它的過濾等

如果它落入的* .jar,它只是起復制,沒有經過過濾。阻止分層/插件在JAR文件中過濾二進制換行符。