2016-02-26 67 views
0

我創建包含一個jar作爲輸出到我的gradle這個任務象下面這樣分佈的zip包含在已創建的壓縮文件中其他文件:使用gradle這個

class MakeDistZipTask extends Zip { 
@TaskAction 
def DistZip(){ 
    Properties properties = new Properties() 
    properties.load(project.rootProject.file('gradle.properties').newDataInputStream()) 
    def versionName = properties.getProperty('versionName') 
    println("creating a distribution zip") 
    baseName = versionName 
    from ('/dist'){ include '*.jar' } 
    from('src/main/libs/armeabi-v7a/') { 
     include('*') 
     into('armeabi-v7a') 
    } 

    destinationDir = file('dist/') 
} 

} 我執行這個任務,我得到一個包含jar和armeabi-v7a文件夾的zip文件。

現在,我想自定義此zip文件而不更改此任務(必需),以便在build.gradle項目中,用戶可以根據需要向此zip添加文件。我嘗試了一些可用的解決方案,但似乎沒有什麼效果。我曾嘗試

jar{ 
baseName = 'distZip' 
from('src/main/jni/'){ 
    include('VC*.h') 
    into('includes') 
} 
manifest { 
    attributes 'Implementation-Title': 'Analytics Library', 'Implementation-Version': version 
} 

另一種解決方案:

sourceSets.main.resources{ 
from('src/main/jni/'){ 
    include('VC*.h') 
    into('includes') 
} 

另外,我用分配插件:

/*apply plugin: 'java-library-distribution' 
version 1.0 
distributions{ 
jar{ 
    baseName='distZip' 
    contents{ 
     from('src/main/jni/') { 
      include('VC*.h') 
      into('includes') 
      } 
     } 
    } 
    } 

無解添加文件到壓縮文件。任何指針

+0

能否請您提供一個完整的最小構建文件,解釋什麼任務,你'正在執行,你期望它做什麼以及它做了什麼? –

+0

解壓縮,修改,重新打包? – RaGe

+0

我正在通過分發插件,這不會有用嗎? – sver

回答

1

我得到這個工作使用分配插件。我添加插件自定義插件項目,並在項目中,我添加了一套我要添加到我的zip文件夾這樣的文件:

distributions{ 
      myZip{ 
       from('path'){ 
         include 'file' 
       } 
      } 
} 
+0

但這不是已創建的zip,因爲您的問題標題要求.. – RaGe

+0

myZip是使用自定義插件創建的aready創建的zip – sver

0

未經檢驗的,但我會嘗試這種形式的東西:

task newZip(type: Zip)<<{ 
    basename newZip 
    from ziptree(oldZip.zip) 
    from filetree(dir/of/new/files) 
} 

你也可以做一個DistZip.finalizedBy(newZip)確保newZip被調用每次distZip運行。

+0

我執行這個,我執行makeDist任務,它說newZip是UP_TO_DATE – sver

+0

這可能意味着它*是*最新?你可以運行'gradle clean makeDist' – RaGe

+0

我做了gradlew clean makeDist -i,它說跳過任務,因爲它不包含任何源文件。 – sver