Как добавить исходный набор в проект Java в Gradle 2.1?

Как добавить исходный набор в проект Java в Gradle 2.1?

Я прочитал документы по плагину Java и SourceSetOutput и нескольким другим 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 ответ

Решение

Вам нужно изменить 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 задача на работу.

Другие вопросы по тегам