2013-12-10 2 views
2

(다른 targetCompatibility 및 sourceCompatibility를 사용하여) 컴파일하고 전체 main/src/java 폴더의 작은 하위 세트를 jar하려고합니다.자바 클래스의 하위 집합을 컴파일하고 jar로 배열하십시오.

main/src/java/com/interface/A.java 
main/src/java/com/interface/B.java 
main/src/java/com/logic/C.java 

나는 항아리 "projectname_projectversion_interface.jar"와 다른 컴파일러 버전을 사용하여 A와 B를 컴파일합니다.

이것이 가능합니까? 어떻게해야합니까?

감사

답변

3

내가 별도의 소스 세트를 사용하는 것이 좋습니다 : mainapi에 의존하는 경우 같은 추가

apply plugin: "java" 

sourceSets { 
    main { 
     java { 
      exclude "com/interface/A.java" 
      exclude "com/interface/B.java" 
     } 
    } 
    api { 
     java { 
      srcDir "src/main/java" 
      include "com/interface/A.java" 
      include "com/interface/B.java" 
     } 
    } 
} 

을 :

sourceSets.main.compileClasspath += sourceSets.api.output 

소스/대상 호환성에 조정할 수 있습니다 컴파일 작업 수준 :

가 Gradle을 자체로 실행되는 JDK에 속하는 이외의 컴파일러를 사용하려면 컴파일러 실행 파일을 설정해야합니다 :이 어느 정도 빌드 속도가 느려질 수 있습니다

compileApiJava { 
    options.fork = true 
    options.forkOptions.executable = "/path/to/compiler/executable" 
} 

.

API에 대한 자세한 내용은 Gradle Build Language Reference을 확인하십시오. 작업 jarApi (유형 : 항아리) { 의 DependsOn compileApiJava sourceSets.api.output에서 분류 = 'API' } 작업 sourcesApiJar (유형 : 항아리,의 DependsOn : apiClasses) {

+0

나는이 추가 classifier = 'api-sources' from sourceSets.api.allSource } – Soccertrash

+0

오른쪽, 각 소스 세트에 Jar 작업이 자동으로 추가되지 않는다는 사실을 잊어 버렸습니다. –

관련 문제