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

时间:2014-12-08 20:30:29

标签: jar gradle build.gradle

我有以下依赖项,我想创建一个主jar文件,其中只包含来自gradle依赖项的5个jar文件(来自root项目依赖项的3个jar文件和来自子项目依赖项的2个jar文件)(我只想包含以下文件' spring-webmvc',' spring-test'和'参数'以及我的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'


}

2 个答案:

答案 0 :(得分:0)

Peter Niederwieser,我使用了以下脚本,但是我遗漏了一些东西并且它无法正常工作,以下行是抛出异常 “来自reuterslibs.reuters.collect {zipTree(it)}”。我想要创建单个主jar文件,其中包含ext.reuterslibs中指定的jar文件中的所有类

  • 出了什么问题: 评估根项目“workbench”时出现问题。 无法将提供的表示法转换为文件或URI:文件集合。 支持以下类型/格式:
    • String或CharSequence路径,例如'src / main / java'或'/ usr / include'
    • String或CharSequence URI,例如'file:/ usr / include'
    • 文件实例。
    • URI或网址实例。

ext.reuterslibs = [ 路透社:[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)}}
}

答案 1 :(得分:0)

以下是工作解决方案,现在我唯一关心的是,我想使用 ext.jidelibs 中指定的所有文件创建一个jar文件,该文件在< strong> dependencies.gradle 并使用应用于:&#34; $ rootDir / dependencies.gradle&#34; 应用于 build.gradle ,所以现在我不希望将jidelib定义为配置,我想直接遍历 ext.jidelibs 中定义的文件,并希望创建包含ext中定义的所有jar文件内容的主jar文件。 jidelibs。

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
}