Gradle如何构建具有不同依赖关系的jar的多个版本

时间:2016-04-19 07:33:02

标签: gradle

如果有人试图解决类似的问题,请分享您的解决方案。在我的gradle文件中,我有不同的子项目。截至目前,我能够构建具有核心的rest-client,但是也可能存在使用db-client子项目构建rest-client的情况。基本上我的想法是我需要能够构建具有不同依赖性的rest-client。假设一个任务构建依赖于一个项目的rest-client,另一个任务构建依赖于两个子项目的rest-client。

project(':core') {
    apply plugin: "groovy"
    repositories {
        mavenCentral()
    }
    dependencies {
        compile 'org.codehaus.groovy:groovy-all:2.4.5'
        testCompile "org.testng:testng:6.8.21"
    }
}

//rest-client Project specific stuff
project(':rest-client') {
    apply plugin: "groovy"
    repositories {
        mavenCentral()
    }

    dependencies {
        compile 'org.codehaus.groovy.modules.http-builder:http-builder:0.7.1'
        compile project(':core')
        compile 'org.codehaus.groovy:groovy-all:2.4.5'
        testCompile "org.testng:testng:6.8.21"

    }
    jar {
        from configurations.runtime
    }
}

//db-client Project specific stuff
project(':db-client') {
    apply plugin: "groovy"
    repositories {
        mavenCentral()
    }
    dependencies {
        compile project(':core')
        compile 'org.codehaus.groovy:groovy-all:2.4.5'
        compile 'mysql:mysql-connector-java:5.1.37'
        //compile 'org.elasticsearch:elasticsearch:2.3.1'
        compile 'org.elasticsearch:elasticsearch-client-groovy:0.10.0'
    }
}

1 个答案:

答案 0 :(得分:0)

对于迟到的回复感到抱歉,如果你仍然需要这样的东西就是一个例子。

apply plugin: "groovy"

repositories {
  mavenCentral()
}

configurations {
  projectDep
  libraryDep
}

project('core') {
  apply plugin: "java"

}

dependencies {
  projectDep project(':core')
  libraryDep 'my.project:project:0.1.0'

  compile 'org.codehaus.groovy.modules.http-builder:http-builder:0.7.1'
  compile 'org.codehaus.groovy:groovy-all:2.4.5'
  testCompile "org.testng:testng:6.8.21"
}

jar {
  from configurations.libraryDep
}

task projectJar(type: Jar) {
  appendix = 'project'
  from sourceSets.main.output, configurations.projectDep, configurations.runtime
}

你有2个jar任务。 jar从compile,runtime和libraryDep获取所有声明的依赖项,projectJar接受compile,runtime和projectDep。

希望这有帮助。