2015-01-14 2 views
2

에 포함되지 않은 종속성을 컴파일 :Gradle을가 build.gradle이 빌드하는 Gradle을 플러그인 빌드 plugins.jar, 내가 항아리를 항아리

apply plugin 'java' 
    dependencies { 
    compile gradleApi() 
     compile localGroovy() 
     compile('eviware:maven-soapui-plugin:4.5.1') 
     compile('org.antlr:stringtemplate:4.0.2') 
     compile('commons-io:commons-io:2.4') 
     compile('joda-time:joda-time:2.1') 
    } 

이 구축-plugins.jar을 구축합니다. 그리고 플러그인을 소비하는 프로젝트 파일에서 플러그인 항아리를 참조

apply plugin 'thepluginwahoo' 
buildscript { 
dependencies { 
     classpath 'org.jfrog.buildinfo:build-info-extractor-gradle:2.2.1' 
     classpath files('/path/to/build-plugins.jar') 
    } 
} 

문제는 내가 두 번째 프로젝트의 모든 작업을 실행할 때, 내가 할 근본 원인으로 "클래스의 프록시 클래스 XYZ에 대해 만들 수 없습니다"입니다 4 가지 의존성 (joda-time, commons-io, stringtemplate, maven-soapui-plugin)이 존재하지 않는다는 것입니다. 내가 플러그인이 소요되는 프로젝트에 종속성을 추가하는 경우 그것은 잘 작동 : 플러그인 프로젝트에서 "컴파일"의존성의 클래스에 표시하지 않는 이유

apply plugin 'thepluginwahoo' 
buildscript { 
    dependencies { 
     classpath 'org.jfrog.buildinfo:build-info-extractor-gradle:2.2.1' 
     classpath files('/path/to/build-plugins.jar') 
     classpath 'eviware:maven-soapui-plugin:4.5.1' 
     classpath 'org.antlr:stringtemplate:4.0.2' 
     classpath 'joda-time:joda-time:2.1' 
     classpath 'commons-io:commons-io:2.4' 
    } 

}

내 질문은 jar가 플러그인을 사용하는 프로젝트의 buildscript 클래스 경로에 포함될 때 플러그인을 사용하는 프로젝트.

답변

3

Jars에는 일반적으로 종속성이 없습니다. 대신 이슈의 종속성을 설명하는 일종의 메타 데이터 설명자 (pom.xml 또는 ivy.xml)와 함께 저장소에 게시됩니다. jar 파일을 종속성으로 직접 참조하면 Gradle은 전이 의존성이 무엇인지 알 수 없습니다. 명시 적으로 선언

  1. 이 (Gradle을 당신을 위해 할 것)에 필요한 메타 데이터와 함께, 저장소에 플러그인 항아리를 게시하고 external module dependency
  2. 로에서 가져 :이 처리하는 방법은 몇 가지있다 플러그인의 전이 종속성은 client module dependency을 사용합니다.
  3. Gradle fatjar 또는 shadow 플러그인을 사용하여 항아리 내 종속성을 묶습니다.
관련 문제