2013-06-11 13 views
1

나는 gradle에 처음으로 실패했으며 프로젝트 중 하나에 WSDL2Java 관련 태스크를 추가하려는 다중 프로젝트 그래클 빌드가 있습니다. 생성 된 스텁을 jar 파일로 생성, 컴파일, 패키지화하고 클래스 패스에 추가하는 데 필요한 작업을 코딩했습니다. 자바 컴파일이 시작되기 전에이 작업을 수행하고 싶습니다. 다음은Gradle : WSDL 및 XSD에서 소스 생성 및 컴파일을 위해 기본 클래스 경로에 추가

, 난 빌드 예외와 함께 실패 새로운 작업

task genClasses(type: JavaExec) { 
//Run WSDL2Java and generate java source files. 
} 

task compileClasses(dependsOn:'genClasses'){ 
//Use ant.javac or add type:JavaCompile in task defination as shown below 
// task compileClasses(dependsOn:'genClasses',type:JavaCompile) 
} 

task packageClasses(dependsOn:'compileClasses',type:Jar){ 
//package my jar 
} 

task createStubs(dependsOn: 'packageClasses'){ 
    //add created jar to the classpath 
} 

compileJava.dependsOn createStubs 

을 코딩하는 방법이며, 나는 compileClasses 작업은 어떻게 든이 순환 종속성을 일으키는 것을 알아 낸

Circular dependency between tasks. Cycle includes [task ':projectx:genWsdlClasses', task ':projectx:classes']. 

메시지 아래에 표시되지만 그것을 제거하는 방법을 모르십니까?

이 소스 생성을 수행하고, 생성 된 소스를 컴파일하고, 패키징하고, 메인 소스가 빌드되기 전에 메인 소스 세트 클래스 경로에 추가하는 다른 방법이 있습니까?

+0

gradle 파일을 일치시키기 위해 "genClasses"라는 오류 메시지가 표시됩니까? 아니면 첫 번째 작업의 이름을 genWsdlClasses로 지정해야합니까? 나는 질질 끌려 고 노력하지 않고있다. 내가 뭔가를 놓치지 않았는지 확인하고 싶다. –

+2

코드를 그라디언트 파일에 복사하여 붙여 넣고 Java 플러그인을 추가하고 JavaExec 유형을 제거하면 정상적으로 실행되었습니다. 허락하면, 그것은 기본적으로 아무것도하지 못했지만 효과가있었습니다. –

+0

여기에서 동일합니다. 나를 위해 잘 작동합니다. 전체 빌드 스크립트를 게시 할 수 있습니까? –

답변

1

사용 가능한 Jaxb-Plugin을 here으로 사용합니다. 내 Gradle을 빌드 파일은 다음과 같습니다

buildscript { 
    repositories { 
    mavenCentral() 
    } 
    dependencies { 
    classpath 'no.entitas.gradle.jaxb:gradle-jaxb-plugin:2.0' 
    } 
} 

dependencies { 
    jaxb 'com.sun.xml.bind:jaxb-xjc:2.2.5-1' 
    jaxb 'com.sun.xml.bind:jaxb-impl:2.2.5-1' 
} 

generateSchemaSource.destinationPackage = "my.custom.package" 

내가이 원하는 JAXB 클래스를 만들 것이라고 믿는다. 그게 도움이 되니?