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

标签 java gradle gradle-2

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

我已经阅读了 Java Plugin 上的文档和 SourceSetOutput和其他一些 SO 线程,我仍在努力弄清楚它是如何工作的。

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

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;
   }
}

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

最佳答案

需要修改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 任务运行所必需的。

关于java - 如何在 gradle 2.1 中将源集添加到 Java 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26221958/

相关文章:

command-line - Gradle myCustomTask-如何避免通过传递命令行参数来调用依赖项任务

java - 在 tomcat 服务器上的 Web 应用程序中使用 SVNKit 时 JRE 崩溃

java - SonarQune 提示从 wsdl 文件生成的 _equalsCalc 变量不是 transient 的或可序列化的

java - 套接字正在运行但未通过端口接收值

android - 原因: compileSdkVersion is not specified

gradle - 任务是否复制了同一项目中另一个任务的所有依赖项?

java - 如何在 Spring Data JDBC 中编写自定义 @Query?

gradle - 使用实现项目时,可传递引用不起作用

gradle - 将SonarQube(4.5.4)与Gradle(2.1)连接起来会抛出HTTP 400