如何在gradle 2.1中为Java项目添加源集?

时间:2014-10-06 17:55:18

标签: java gradle gradle-2

如何在gradle 2.1中将源集添加到Java项目?

我已经阅读了Java PluginSourceSetOutput以及其他一些SO主题的文档,我仍然在努力弄清楚它是如何工作的。

我创建了一个简单的构建脚本来测试我的理解。根据用户指南的第23.7.2节,例23.5,看来我可以通过这样做来创建一个sourceSet:

sourceSets {
   generated
}

第23.4节。项目布局似乎暗示我需要做的就是因为我的源集遵循gradle约定。要包含在源集中的代码位于src/generated/java/packagename中。并将自动添加到类路径中。基于我从使用生成的源集中定义的代码的代码获得的符号未找到的错误,我认为这是不正确的,还需要做其他事情。我需要做什么?

这是我的设置:

的build.gradle

apply plugin: 'java'
apply plugin: 'application'

mainClassName = "tester.Test"

sourceSets {
    generated
}

文件结构

tester/
├── build
│   ├── classes
│   │   └── main
│   ├── dependency-cache
│   └── tmp
│       └── compileJava
├── build.gradle
└── src
    ├── generated
    │   └── java
    │       └── tester
    │           └── Boom.java
    └── main
        └── java
            └── tester
                └── Test.java

Boom.java

package tester;

class Boom {
   String sound;

   public Boom (String s){
      sound = s;
   }
}

Test.java

package tester;

class Test {
   public static void main(String[] args) {
      Boom b = new Boom("KABOOM");

      System.out.println("I've run");
      System.out.println(b.sound);
   }
}

1 个答案:

答案 0 :(得分:1)

您需要通过以下方式修改build.gradle

sourceSets {
    generated
    main {
        compileClasspath += generated.output  // adds the sourceSet to the compileClassPath
        runtimeClasspath += generated.output  // adds the sourceSet to the runtimeClasspath
    }
}

project.run.classpath += sourceSets.generated.output //add the sourceSet to project class path

请记住,添加新的源集与在类路径中编译源集不同。

源代码集下方的行是run任务工作所必需的。