11

依存する jasperreports.jar からファイル「default.jasperreports.properties」を抽出し、新しい名前「jasperreports.properties」で zip ディストリビューションに入れたい

サンプル gradle ビルド:

apply plugin: 'java'

task zip(type: Zip) {
    from 'src/dist'
  //  from configurations.runtime
    from extractFileFromJar("default.jasperreports.properties");
    rename 'default.jasperreports.properties', 'jasperreports.properties'

}

def extractFileFromJar(String fileName) {
    //    configurations.runtime.files.each { file -> println file} //it's not work 
    // not finished part of build file
    FileTree tree = zipTree('someFile.zip')
    FileTree filtered = tree.matching {
        include fileName
    }

}

repositories {
    mavenCentral()
}

dependencies {
    runtime 'jasperreports:jasperreports:2.0.5'
}

依存関係jasperreports-2.0.5.jarからextractFileFromJar()でFileTreeを取得するには?

上記のスクリプトで使用します

FileTree tree = zipTree('someFile.zip')

しかし、(間違っているが、人間が読める)のようなものを使いたい

FileTree tree = configurations.runtime.filter("jasperreports").singleFile.zipTree

PS:電話してみてください

def extractFileFromJar(String fileName) {
    configurations.runtime.files.each { file -> println file} //it's not work 
...

しかし、それは例外的に機能しません

未解決状態でない構成は変更できません!

4

2 に答える 2

14

考えられる解決策は次のとおりです (コードが 1000 語を超える場合もあります)。

apply plugin: "java"

repositories {
    mavenCentral()
}

configurations {
    jasper
}

dependencies {
    jasper('jasperreports:jasperreports:2.0.5') { 
        transitive = false
    }
}

task zip(type: Zip) {
    from 'src/dist'
    // note that zipTree call is wrapped in closure so that configuration
    // is only resolved at execution time
    from({ zipTree(configurations.jasper.singleFile) }) {
        include 'default.jasperreports.properties'
        rename 'default.jasperreports.properties', 'jasperreports.properties'
    }
}
于 2012-11-12T16:05:38.040 に答える