2

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

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

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

sourceSets {
   generated
}

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

这是我的设置:

构建.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;
   }
}

测试.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);
   }
}
4

1 回答 1

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任务正常工作所必需的。

于 2014-10-06T18:19:15.900 回答