Java Gradle:将多个源集组装到一个jar中

Java Gradle:将多个源集组装到一个jar中,java,gradle,Java,Gradle,我在这里问了一个相关的问题 在这个问题上,我试图找到进行多阶段构建的最佳方法,包括在中间步骤生成类。我选择了第二种方法,现在发现自己陷入了僵局 我有以下build.gradle文件 apply plugin: 'java' apply plugin: 'eclipse' sourceSets { bootstrap generated { compileClasspath += bootstrap.output } main {

我在这里问了一个相关的问题

在这个问题上,我试图找到进行多阶段构建的最佳方法,包括在中间步骤生成类。我选择了第二种方法,现在发现自己陷入了僵局

我有以下build.gradle文件

apply plugin: 'java'
apply plugin: 'eclipse'

sourceSets
{
    bootstrap 

    generated {
        compileClasspath += bootstrap.output
    }

    main {
        compileClasspath += bootstrap.output
        compileClasspath += generated.output
    }
}

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'org.jooq:jooq-codegen:3.5.0'
        classpath 'postgresql:postgresql:9.1-901.jdbc4'
        classpath project(":")
    }
}

dependencies
{
    compile 'org.jooq:jooq:3.5.0'
    compile 'org.jooq:jooq-codegen:3.5.0'
    compile 'org.apache.poi:poi:3.10.1'
    compile 'com.google.guava:guava:18.0'

    generatedCompile 'org.jooq:jooq:3.5.0'
    generatedCompile 'org.jooq:jooq-codegen:3.5.0'
    generatedCompile 'org.apache.poi:poi:3.10.1'
    generatedCompile 'com.google.guava:guava:18.0'

    bootstrapCompile 'org.jooq:jooq:3.5.0'
    bootstrapCompile 'org.jooq:jooq-codegen:3.5.0'
    bootstrapCompile 'org.apache.poi:poi:3.10.1'
    bootstrapCompile 'com.google.guava:guava:18.0'
}

task generate << {
    //Use JOOQ to generate classes, with the output going into the generated sourceSet
          .withDirectory(file("src/generated/java").getAbsolutePath())
}

generatedClasses
{
    dependsOn bootstrapClasses
    dependsOn generate
}

jar
{
    dependsOn generatedClasses
    dependsOn bootstrapClasses
}
apply插件:“java”
应用插件:“eclipse”
源集
{
独自创立
产生{
compileClasspath+=bootstrap.output
}
主要{
compileClasspath+=bootstrap.output
compileClasspath+=生成的.output
}
}
构建脚本{
存储库{
mavenCentral()
}
依赖关系{
类路径'org.jooq:jooq代码根:3.5.0'
类路径“postgresql:postgresql:9.1-901.jdbc4”
类路径项目(“:”)
}
}
依赖关系
{
编译“org.jooq:jooq:3.5.0”
编译“org.jooq:jooq代码根:3.5.0”
编译“org.apache.poi:poi:3.10.1”
编译'com.google.guava:guava:18.0'
生成编译“org.jooq:jooq:3.5.0”
生成编译“org.jooq:jooq代码根:3.5.0”
生成编译“org.apache.poi:poi:3.10.1”
生成编译'com.google.guava:guava:18.0'
bootstrapCompile'org.jooq:jooq:3.5.0'
bootstrapCompile'org.jooq:jooq代码根:3.5.0'
bootstrapcomfile'org.apache.poi:poi:3.10.1'
bootstrapCompile'com.google.guava:guava:18.0'
}

任务生成好的。我想我已经找到了这个问题的答案。有两部分

第一个问题(必须多次指定相同的依赖项)通过添加以下内容得到修复:

configurations {
    generatedCompile {
        extendsFrom compile
    }
    bootstrapCompile { 
        extendsFrom compile
    }
}
第二个问题,jar文件没有所有的构建工件,通过将jar任务更改为

jar 
{
    from sourceSets.generated.output
    from sourceSets.bootstrap.output
    dependsOn bootstrapClasses
    dependsOn generatedClasses
}

你有网上的例子可以试试吗?嗨,欧泊。我可以把一个放在一起。我今晚就去。