如何从 gradle 依赖项的子集(jar 文件)创建主 jar 文件



我有以下依赖项,我想创建一个主jar文件,其中仅包含来自gradle依赖项的5个jar文件(来自根项目依赖项的3个jar文件和来自子项目依赖项的2个jar文件)(我只想包含以下文件"spring-webmvc","spring-test"和"parameters"以及在我的master.jar文件中子项目的依赖项中定义的另外两个jar文件)

dependencies {
    compile project(':java_farm_core')
    compile group: 'org.springframework', name: 'spring-webmvc', version: "$springVersion"
    testCompile group: 'org.springframework', name: 'spring-test', version: "$springVersion"
    runtime group: 'com.fir.param', name: 'parameters', version: '1.0-nep'
    compile group: 'org.springframework', name: 'spring-beans', version: "$springVersion"
    compile 'commons-codec:commons-codec:1.9'
    compile group: 'com.fir.jide', name: 'jide-common', version: "$jideVersion"
    compile group: 'com.fir.jide', name: 'jide-grids', version: "$jideVersion"
    compile group: 'com.fir.jide', name: 'jide-charts', version: "$jideVersion"
    testCompile group: 'org.springframework', name: 'spring-oxm', version: "$springVersion"
    testCompile group: 'org.codehaus.castor', name: 'castor-xml', version: "1.3.1"
    testCompile 'org.easymock:easymock:3.1'
    runtime group: 'com.fir.param', name: 'parameters', version: '1.0-nep'

}

Peter Niederwieser,我使用了以下脚本,但我缺少一些东西并且它不起作用,以下行抛出异常"来自reuterslibs.reuters.collect { zipTree(it) }" .我正在绑定创建单个主jar文件,其中包括ext.reuterslibs中指定的jar文件中的所有类

  • 出了什么问题:评估根项目"工作台"时出现问题。无法将提供的表示法转换为文件或 URI: 文件集合。支持以下类型/格式:
    • 字符串或字符序列路径,例如"src/main/java"或"/usr/include"
    • 字符串或字符序列 URI,例如"file:/usr/include"
    • 文件实例。
    • URI 或 URL 实例。

分机路透社 = [路透社 : [files ("jfl/reuters/ansi.jar" ,"jfl/reuters/jDacsPrincipal.jar","jfl/reuters/jsfc_p2ps.jar" )]]

task reutersJar( type: Jar ) {
    baseName = 'Reuters'
    from reuterslibs.reuters.collect { zipTree(it) }
    //from reuterslibs.reuters.collect { from zipTree(it) }
    //from files {reuterslibs.reuters.collect {zipTree(it)}}
}
这是工作解决方案, 现在我唯一关心的是,我想使用 ext.jidelibs 中指定的所有文件创建一个 jar 文件,该文件在 dependencies.gradle 中

定义并使用 apply: "$rootDir/dependencies.gradle" 应用于 build.gradle,所以现在我不想将 jidelib 定义为配置,我想直接迭代 ext.jidelibs 中定义的文件并希望创建包含 ext.jidelibs 中定义的 jar 文件的所有内容的主 jar 文件。

ext.jidelibs = [
    jide: [
        files ("$jfl/jide/batik-awt-util.jar",
        "$jfl/jide/commons-collections-3.1.jar",
        "$jfl/jide/commons-logging.jar",
        "$jfl/jide/jide-charts.jar",
        "$jfl/jide/jide-action.jar"
                       )
    ]]

// task to generate signedJide.jar
task jideJar( type: Jar ) {
    duplicatesStrategy = 'exclude'
    baseName = 'Jide'
    from configurations.jidelib.collect {
        it.isDirectory() ? it : zipTree(it).matching {
           exclude "META-INF/*LICENSE*"
           // exclude "META-INF/*NOTICE*"
            //exclude "com/jidesoft/document/document.properties"
           } }
}

configurations {
    jidelib
}

dependencies {  
    jidelib jidelibs.jide
}

最新更新