如何超越gradle wsimport任务JDK 8访问限制?

如何超越gradle wsimport任务JDK 8访问限制?,gradle,java-8,wsimport,Gradle,Java 8,Wsimport,我的gradle build中有一个wsimport任务在Java 7之前运行良好: task wsimport { ext.destDir = file("${buildDir}/generated/java") ext.wsdlSrc = file("src/main/resources/schema/example/my.wsdl") ext.bindingSrc = file("src/main/resources/schema/example/bindings.

我的gradle build中有一个wsimport任务在Java 7之前运行良好:

task wsimport {
    ext.destDir = file("${buildDir}/generated/java")
    ext.wsdlSrc = file("src/main/resources/schema/example/my.wsdl")
    ext.bindingSrc = file("src/main/resources/schema/example/bindings.xsd")
    outputs.dir destDir
    doLast {
        ant {
            destDir.mkdirs()
            taskdef(name: 'wsimport',
                classname: 'com.sun.tools.ws.ant.WsImport',
                classpath: configurations.jaxws.asPath)
            wsimport(keep: true,
                package: 'net.example.my',
                xnocompile: true,
                quiet: true,
                sourcedestdir: destDir,
                wsdl: wsdlSrc,
                binding: bindingSrc,
                encoding: "UTF-8"
            )
        }
    }
}
切换到JDK 8(build 1.8.0-b129)时,出现以下错误:

java.lang.AssertionError: org.xml.sax.SAXParseException; systemId: ... schema_reference:
Failed to read schema document 'xjc.xsd', because 'file' access is not allowed due to restriction set by the accessExternalSchema property.
在搜索问题时,我发现了以下帖子(同样用Java 7描述了问题): 但是我无法将环境/参数传递给wsimport/xjc


如何禁用此访问或限制?

我找到的唯一有效解决方案是使用反射设置系统属性:

task wsimport {
  System.setProperty('javax.xml.accessExternalSchema', 'file')
  ...
}
使用
ext
systemProperty
的所有其他解决方案都不适用于我。
我已经安装了gradle 1.11。

我看到您的gradle任务有一个长期的问题,您将如何支持多个版本的wsdl,或者如果您有多个XSD。文件不允许使用通配符,非常感谢分享,它成功了!!非常有帮助