我在这里问了一个相关的问题JOOQ class generation and gradle
在那个问题中,我试图找到进行多阶段构建的最佳方法,包括在中间步骤中生成类 . 我已经采用了Option Two方法,现在发现自己陷入了僵局 .
我有以下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
}
结构就是这样
-
bootstrap 源集包含代码生成所需的一些核心java类,以及用于制作数据库的sql文件
-
generate 任务使用 boostrap 中的类和sql文件生成类
-
generated 源集保存生成任务的输出,和
-
main 源集拥有可能被称为"normal"类的东西(即使用由引导程序和生成的类描述的数据库的类)
我有几个问题,我无法解开:
-
我似乎必须复制每个源集的依赖项
-
构建jar文件时,它只包含从 main 源集生成的类
我应该注意,上面的构建将成功生成每个源集 .
任何帮助将不胜感激 .
1 回答
好 . 我想我找到了这个问题的答案 . 有两个部分....
第一个问题,必须多次指定相同的依赖项,通过添加以下内容得到修复:
第二个问题,即没有所有构建工件的jar文件,通过将jar任务更改为来修复