2

サブプロジェクトを含むプロジェクトAがあります

A / B A / C

(BおよびCサブプロジェクト)。BとCはAにコンパイルされて1つの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からそれらを取得しますが、Gradleでビルドした後、バイナリの改行データを変換してから、アーカイブを台無しにします。

ビルドされたCopyTaskポストを使用してjarをコピーしようとしましたが、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)])
}
4

1 に答える 1

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に該当する場合は、フィルタリングせずにコピーされます。graddle/pluginがJARファイルのバイナリ改行をフィルタリングしないようにします。

于 2012-10-18T17:43:28.127 に答える