2014-10-06 1 views
2

gradle 2.1의 Java 프로젝트에 소스 세트를 어떻게 추가합니까?gradle 2.1의 Java 프로젝트에 소스 세트를 어떻게 추가합니까?

Java PluginSourceSetOutput 및 기타 몇 가지 SO 스레드를 읽었으며 작동 방식을 파악하는 데 여전히 어려움을 겪고 있습니다.

나는 내 이해를 테스트하기 위해 간단한 빌드 스크립트를 만들었습니다. 사용자 가이드의 23.7.2 절, 23.5 절을 기반으로 다음과 같이 작업하여 sourceSet을 만들 수 있습니다.

sourceSets { 
    generated 
} 

섹션 23.4. 프로젝트 레이아웃은 내 원본 세트가 그라데이션 규칙을 따르기 때문에이 모든 작업이 필요하다는 것을 암시하는 것처럼 보입니다. 소스 집합에 포함될 코드는 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 당신은 다음과 같은 방법으로 build.gradle을 수정해야

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

:

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 작업이 작동하는 데 필요합니다.

+0

감사! 이것은'gradle build'에서 작동합니다, 그러나'gradle run'을 시도하면'NoClassDefFoundError'가 생깁니다. –

+0

흠 .. 정말로. 나는 또한'run'으로 테스트했지만 불행히도'clean'이 없다면 테스트했습니다. 보세요. – Opal

+0

답변을 편집했습니다. 지금 일해야한다. – Opal

관련 문제