2

私のbuild.gradle:

jar {
    dependsOn configurations.runtime
    from { configurations.runtime.collect { it.isDirectory() ? it : zipTree(it) } }

    manifest {
        attributes(
            'Main-Class': 'com.company.product.veryNiceMainClass'
        )
    }
}

最初に依存関係の JAR を選択するように Gradle に指示し、次に JAR を作成するときに実際の実装クラスを選択して、いくつかのものを上書きする可能性があります。実際のプロジェクトには必須です。RTFM を実行しましたが、役に立ちませんでした。あなたはアリでこれを行うことができます:

<target name="dist">
    <!-- deps first -->     
    <jar destfile="${dist.dir}/${ant.project.name}-${build.version}.jar">
        <zipgroupfileset dir="${lib.dir}" includes="**/*-jar-*.jar" />
        <zipgroupfileset dir="${lib.dir}" includes="**/*-bundle-*.jar" />
        <zipgroupfileset dir="${basedir}/lib-old" includes="**/*.jar" />
    </jar>
    <!-- classes, UPDATE (!) the JAR -->
    <jar destfile="${dist.dir}/${ant.project.name}-${build.version}.jar" update="true">
        <fileset dir="${build.classes.dir}" />
    </jar>
</target>

何か案は?

編集:ソリューションが検証されました(Ingoに感謝します)。複数の from ステートメントを希望の順序で定義するだけです。

from { configurations.runtime.collect { it.isDirectory() ? it : zipTree(it) } } // deps
from sourceSets.main.output.classesDir // classes
from 'log4j.properties' // some file
4

1 に答える 1

3

タスクに対して複数のfromステートメントを定義できますjar。結果のファイルはその順序で処理されます。

于 2012-10-04T14:58:23.707 に答える