com.sun.tools.xjc.Plugin: o provedor <plugin> não é um subtipo

Eu tenho um aplicativo CXF JAX-RS sendo construído com o Maven. Estou trabalhando para convertê-lo em Gradle, mas usando a tarefa Ant XJC.

A versão atual usa algumas extensões, uma das quais é uma cópia do plug-in "element wrapper" e a outra é a "jaxb-fluent-api".

Tentei colocar os jars desses dois plugins no caminho de classe xjc, mas quando executo a tarefa XJC, recebo o seguinte:

java.util.ServiceConfigurationError: com.sun.tools.xjc.Plugin: provedor dk.conspicio.jaxb.plugins.XmlElementWrapperPlugin não é um subtipo

A classe XmlElementWrapperPlugin estende "com.sun.tools.xjc.Plugin".

Alguma idéia do que está acontecendo aqui?

Se isso importa, minha configuração do Maven para o plugin xjc é mais ou menos assim:

<plugin>
     <groupId>org.apache.cxf</groupId>
     <artifactId>cxf-xjc-plugin</artifactId>
     <executions>
         <execution>
             <id>generate-sources</id>
             <phase>generate-sources</phase>
             <goals>
                <goal>xsdtojava</goal>
             </goals>
             <configuration>
                <extensions>
                    <extension>JAXBXMLElementWrapperPlugin:JAXBXMLElementWrapperPlugin:1.0.0</extension>
                    <extension>net.java.dev.jaxb2-commons:jaxb-fluent-api:2.1.8</extension>
                </extensions>
                <xsdOptions>
                    <xsdOption>
                        <xsd>${basedir}/src/main/resources/schema/serviceCallResults.xsd</xsd>
                        <packagename>com.att.sunlight.service.domain.serviceCallResults</packagename>
                        <extension>true</extension>
                        <extensionArgs>
                            <extensionArg>-Xxew</extensionArg>
                            <extensionArg>-summary ${basedir}/target/xew-summary.txt</extensionArg>
                            <extensionArg>-instantiate lazy</extensionArg>
                            <extensionArg>-Xfluent-api</extensionArg>
                        </extensionArgs>
                    </xsdOption>
                </xsdOptions>
            </configuration>
        </execution>
     </executions>
</plugin>

Aqui está o meu "build.gradle", com apenas os repositórios elididos:

apply plugin: 'java'
apply plugin: 'maven'
apply plugin: 'war'

group = 'SunlightDataService'
version = '1.2.4-SNAPSHOT'

sourceCompatibility = 1.6
targetCompatibility = 1.6

repositories {
    ...
}

configurations {
    jaxb
}

dependencies {

    jaxb 'com.sun.xml.bind:jaxb-xjc:2.2.7-b41'
    jaxb 'com.sun.xml.bind:jaxb-impl:2.2.7-b41'
    jaxb 'javax.xml.bind:jaxb-api:2.2.7'
    jaxb "JAXBXMLElementWrapperPlugin:JAXBXMLElementWrapperPlugin:1.0.0"
    jaxb "net.java.dev.jaxb2-commons:jaxb-fluent-api:2.1.8"

    compile group: 'org.springframework', name: 'spring-beans', version:'3.2.8.RELEASE'
    compile group: 'org.springframework', name: 'spring-webmvc-portlet', version:'3.2.8.RELEASE'
    compile group: 'org.apache.cxf', name: 'cxf-rt-transports-http', version:'2.7.7'
    compile group: 'log4j', name: 'log4j', version:'1.2.16'
    compile group: 'org.springframework', name: 'spring-jdbc', version:'3.2.8.RELEASE'
    compile group: 'org.springframework', name: 'spring-context', version:'3.2.8.RELEASE'
    compile group: 'org.apache.cxf', name: 'cxf-rt-frontend-jaxrs', version:'2.7.7'
    compile group: 'org.apache.cxf', name: 'cxf-rt-bindings-xml', version:'2.7.7'
    compile group: 'org.apache.cxf', name: 'cxf-rt-databinding-jaxb', version:'2.7.7'
    compile group: 'org.apache.cxf', name: 'cxf-rt-core', version:'2.7.7'
    compile group: 'org.apache.cxf', name: 'cxf-api', version:'2.7.7'
    compile group: 'org.apache.cxf', name: 'cxf-rt-rs-extension-providers', version:'2.7.7'
    compile group: 'org.codehaus.jettison', name: 'jettison', version:'1.3.4'
    compile group: 'org.perf4j', name: 'perf4j', version:'0.9.14'
    compile group: 'cglib', name: 'cglib', version:'2.2.2'
    compile group: 'org.aspectj', name: 'aspectjweaver', version:'1.6.12'
    compile group: 'commons-collections', name: 'commons-collections', version:'3.2.1'
    compile group: 'esGateKeeper', name: 'GLCookieDecryption', version:'1.0.0'
    compile group: 'joda-time', name: 'joda-time', version:'2.3'
    compile group: 'org.apache.jackrabbit', name: 'jackrabbit-core', version:'2.4.0'
    compile group: 'org.apache.commons', name: 'commons-lang3', version:'3.1'
    testCompile group: 'org.springframework', name: 'spring-test', version:'3.2.8.RELEASE'
    testCompile group: 'oracle.jdbc', name: 'oracle.jdbc.OracleDriver', version:'1.0.0'
    testCompile group: 'com.atomikos', name: 'transactions-jta', version:'3.7.0'
    testCompile group: 'org.apache.cxf', name: 'cxf-rt-transports-http-jetty', version:'2.7.7'
    testCompile group: 'com.atomikos', name: 'transactions-jdbc', version:'3.7.0'
    testCompile group: 'org.mockito', name: 'mockito-all', version:'1.9.5'
    testCompile group: 'junit', name: 'junit', version:'4.10'
    testCompile group: 'org.assertj', name: 'assertj-core', version:'1.6.1'
    providedCompile group: 'javax.transaction', name: 'jta', version:'1.1'
    providedCompile group: 'javax.servlet.jsp', name: 'jsp-api', version:'2.1'
    providedCompile group: 'javax.servlet', name: 'servlet-api', version:'2.5'
}

task processXSDs() << {
    ant.taskdef(name: 'xjc', classname: 'com.sun.tools.xjc.XJCTask',
                classpath: configurations.jaxb.asPath)

    ant.xjc(destdir: 'tmp', package: "com.att.sunlight.service.domain.serviceCallResults", extension: true) {
        schema(dir: "src/main/resources/schema", includes: "serviceCallResults.xsd")
        arg(line: "-Xxew")
        arg(line: "-summary target/xew-summary.txt")
        arg(line: "-instantiate lazy")
        arg(line: "-Xfluent-api")
    }
}

compileJava.dependsOn processXSDs

Atualizar:

Concluí que esse não é um problema com a extensão "Element Wrapper". Se eu remover esse jar do caminho de classe e reconstruí-lo, ele relatará o mesmo erro para o plug-in "API Fluent".

Também determinei que isso não é estritamente um problema da Gradle. Eu recebo o mesmo sintoma com um Ant "build.xml" e até mesmo um script de shell simples chamando diretamente a classe Java "XJCFacade". Na verdade, posso simplificar um pouco esse script nem mesmo especificando arquivos de esquema, o que deixa claro que esse erro ocorre mesmo antes de tentar processar qualquer esquema.

O seguinte é o meu script atual:

#! /bin/bash
java -classpath "lib/commons-beanutils-1.7.0.jar;lib/commons-lang-2.2.jar;lib/commons-logging-1.1.1.jar;lib/istack-commons-runtime-2.16.jar;lib/jaxb2-basics-runtime-0.6.5.jar;lib/jaxb2-basics-tools-0.6.5.jar;lib/jaxb-api-2.2.7.jar;lib/jaxb-core-2.2.7.jar;lib/jaxb-fluent-api-2.1.8.jar;lib/jaxb-xew-plugin-1.4.jar;lib/jaxb-xjc-2.2.7.jar" com.sun.tools.xjc.XJCFacade -extension

Você pode construir o mesmo teste baixando todos esses artefatos para o cache Gradle ou Maven e copiando-os em uma estrutura de pastas simples.

Observe também que estou executando esse teste principalmente no Windows 7, mas fechei o projeto com zíper e o mudei para minha CentOS VM e isso me dá exatamente o mesmo erro.

questionAnswers(4)

yourAnswerToTheQuestion