كيفية تجاوز قيود الوصول إلى مهمة gradle wsimport JDK 8؟

StackOverflow https://stackoverflow.com//questions/22044397

  •  21-12-2019
  •  | 
  •  

سؤال

لدي مهمة wsimport في بناء gradle الخاص بي يعمل بشكل جيد حتى 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 (النسخة 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 بشكل مدهش): https://github.com/stianh/gradle-jaxb-plugin/issues/20لكنني غير قادر على تمرير البيئة/الوسيطة إلى wsimport/xjc.

كيفية تعطيل هذا الوصول أو التقييد؟

هل كانت مفيدة؟

المحلول

كان الحل العملي الوحيد الذي وجدته هو تعيين خاصية النظام باستخدام الانعكاس:

task wsimport {
  System.setProperty('javax.xml.accessExternalSchema', 'file')
  ...
}

جميع الحلول الأخرى باستخدام ext أو systemProperty لا يعمل بالنسبة لي.لقد قمت بتثبيت gradle 1.11.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top