Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Gradle JAR:依赖项JAR和实际类的顺序_Java_Ant_Jar_Gradle - Fatal编程技术网

Java Gradle JAR:依赖项JAR和实际类的顺序

Java Gradle JAR:依赖项JAR和实际类的顺序,java,ant,jar,gradle,Java,Ant,Jar,Gradle,我的身材。格雷德尔: jar { dependsOn configurations.runtime from { configurations.runtime.collect { it.isDirectory() ? it : zipTree(it) } } manifest { attributes( 'Main-Class': 'com.company.product.veryNiceMainClass' )

我的身材。格雷德尔:

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

    manifest {
        attributes(
            'Main-Class': 'com.company.product.veryNiceMainClass'
        )
    }
}
我想告诉Gradle,在创建JAR时,首先选择依赖JAR,然后选择实际的实现类,可能会覆盖一些内容。这是实际项目的一个必要条件。我做了一些RTFM,但没有帮助。您可以在ant中执行此操作:

<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>

您可以为
jar
任务定义多个
from
语句,生成的文件将按该顺序处理。

尝试多个
from
语句,类似于您的
zipgroupfileset
entriesOK,我已经添加了这个作为答案
from { configurations.runtime.collect { it.isDirectory() ? it : zipTree(it) } } // deps
from sourceSets.main.output.classesDir // classes
from 'log4j.properties' // some file