我使用注释处理。因此我使用apt plugin。它在build/source/apt
中生成新的java源代码。
这是我的build.gradle:
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'apt'
apply plugin: 'war'
apply plugin: 'gwt'
apply plugin: 'jetty'
sourceCompatibility = 1.7
version = '1.0'
eclipse {
classpath {
downloadSources=true
downloadJavadoc=true
}
}
buildscript {
repositories {
mavenCentral()
jcenter()
maven {
url "https://oss.sonatype.org/content/repositories/snapshots/"
}
}
dependencies {
classpath 'de.richsource.gradle.plugins:gwt-gradle-plugin:0.6'
classpath 'com.jimdo.gradle:gradle-apt-plugin:0.5-SNAPSHOT'
}
}
repositories {
mavenCentral()
maven {
name = "sonatype"
url = "https://oss.sonatype.org/content/repositories/snapshots/"
}
}
dependencies {
apt 'com.google.dagger:dagger-compiler:2.0-SNAPSHOT:jar-with-dependencies'
compile 'com.google.guava:guava:18.0'
compile 'com.google.guava:guava-gwt:18.0'
compile 'javax.inject:javax.inject:1'
compile 'com.google.dagger:dagger:2.0-SNAPSHOT'
}
gwt {
gwtVersion='2.7.0'
logLevel = 'INFO'
minHeapSize = "512M";
maxHeapSize = "1024M";
compiler {
strict = true;
}
modules 'test.GWTT'
}
tasks.withType(de.richsource.gradle.plugins.gwt.AbstractGwtActionTask) {
args '-XjsInteropMode', 'JS'
}
我需要在我的项目中使用这些资源,以便eclipse可以找到它们并在编译项目时将它们包含在内,我该怎么做?
编辑:使用
sourceSets {
apt{
java{
srcDir 'build/source/apt'
}
}
}
运行gradle build
时导致以下错误:
Compiling module test.GWTT
Tracing compile failure path for type 'test.client.GWTT'
[ERROR] Errors in 'file:/Users/mg/Documents/Grails/GGTS3.6.2/TestGradle2/src/main/java/test/client/GWTT.java'
[ERROR] Line 17: No source code is available for type test.client.test2.Dagger_MyWidgetGinjector; did you forget to inherit a required module?
Finding entry point classes
Tracing compile failure path for type 'test.client.GWTT'
[ERROR] Errors in 'file:/Users/mg/Documents/Grails/GGTS3.6.2/TestGradle2/src/main/java/test/client/GWTT.java'
[ERROR] Line 17: No source code is available for type test.client.test2.Dagger_MyWidgetGinjector; did you forget to inherit a required module?
[ERROR] Hint: Check the inheritance chain from your module; it may not be inheriting a required module or a module may not be adding its source path entries properly
:compileGwt FAILED
使用以前的Eclipse查找生成文件的来源,但构建不会。
答案 0 :(得分:17)
sourceSets.main.java.srcDirs = ['build/generated-sources/xjc','src/main/java']
为我工作。
答案 1 :(得分:7)
对于带有jar插件的匕首2,你可以放
sourceSets.main.java.srcDirs = ['build/generated/source/apt/main','src/main/java']
build.gradle中的
答案 2 :(得分:4)
以防万一有人使用Kotlin脚本(.kts)搜索解决方案:
sourceSets["main"].java.srcDir(file("path/to/generated/source/directory"))
希望,会有所帮助。
答案 3 :(得分:2)
尝试为输出类定义自定义源集。 类似的东西:
sourceSets {
apt{
java{
srcDir 'build/source/apt'
}
}
}
应该让你接近。有关更多详细信息,请查看java gradle plugin docs的源集部分(23.7)以获取更多详细信息。
答案 4 :(得分:2)
其他人回答的内容将覆盖我的原始目录,所以我找到了一种解决方法-如果您不想覆盖原始目录列表,则可以这样操作:
sourceSets.main.java.srcDirs += myDir
sourceSets.main.kotlin.srcDirs += myDir
关键是在这里使用+=
。基本上与这样声明相同:
sourceSets {
main {
java.srcDirs += myDir
kotlin.srcDirs += myDir
}
}
答案 5 :(得分:0)
考虑这样的代码结构
Authentication
src / main / gen-是生成代码的文件夹
src / main / java-是用于手动代码的文件夹
要同时包含(生成的Java代码和手动的Java代码),您必须将二者都指定为java编译的输入目录(在build.gradle文件中)-我将其添加到文件末尾:
src
├───main
│ ├───gen
│ │ └───com
│ │ └───java
│ │ └───generated
│ │ └───code
│ ├───java
│ │ └───com
│ │ └───java
│ │ └───test
│ └───resources
│ ├───icons
│ └───META-INF
└───test
├───java
└───resources
您可以指定任意多个来源。 希望这会有所帮助并解释一下
答案 6 :(得分:0)
使用 kotlin gradle dsl 时:
sourceSets {
main {
java {
srcDir("$apiSpecOutputDir/src/main/java")
}
}}