2014-10-13 11 views
17

के लिए javax.xml.accessExternalSchema निर्दिष्ट करने के लिए कैसे करें मेरे पास एक मैवेन प्लगइन (jaxb2) है और मुझे इसके लिए एक जेवीएम तर्क प्रदान करने की आवश्यकता है। मुझे नहीं लगता कि इसके लिए पोम में जेवीएम तर्क जोड़ने के लिए एक टैग है।JAXB2 मेवेन प्लगइन

मैं जानता हूँ कि मैं JVM args में कमांड लाइन जैसे पर पारित कर सकते हैं: mvn clean install -Djavax.xml.accessExternalSchema=all

यह पोम में यह JVM आर्ग स्थापित करने के लिए इतना है कि मैं कमांड लाइन में हर बार यह टाइप करने के लिए की जरूरत नहीं है संभव है ?

(जैसा कि एक तरफ - इस JVM आर्ग यह जावा-8 के साथ काम करने के लिए लिए यह आवश्यक है यह जावा-7 के साथ ठीक काम करता है।)

उत्तर

23

इस नए XML security properties in JAXB 1.5, जावा 8. में पेश करने के लिए प्रासंगिक है और इसीलिए आपके अब जावा 8 पर असफल लेकिन जावा 7.

के साथ काम बनाता है तुम मेरे maven-jaxb2-plugin उपयोग कर रहे हैं, संस्करण में अपग्रेड करें यह वह जगह है 0.9.0 या बाद में (वर्तमान 0.10.0 है)। अब यह accessExternalSchema स्विच है (डिफ़ॉल्ट all है)।

यह ठीक javax.xml.accessExternalSchema=all सेट करता है।

कृपया documentation देखें।

+0

धन्यवाद! कोडहॉस प्लगइन से आपके हाल के संस्करण में स्विच करने से समस्या हल हो गई है। कोई अतिरिक्त कॉन्फ़िगर की आवश्यकता नहीं है :) –

+0

प्रलेखन में इसका उल्लेख है कि ACCESS_EXTERNAL_SCHEMA का सभी का डिफ़ॉल्ट मान है, तो हमें इसे सेट करने की आवश्यकता क्यों है? –

0

Maven संकलक प्लगइन पर एक नजर डालें। विशेष रूप से आप कंपाइलर को सेटिंग्स पास करने के लिए <compilerArgument> तत्व का उपयोग करने में सक्षम होना चाहिए।

उदाहरण के लिए http://maven.apache.org/plugins/maven-compiler-plugin/examples/pass-compiler-arguments.html देखें।

+0

वह संकलक करने के लिए बात करने की कोशिश नहीं कर रहा है। – bmargulies

0

यदि आप जेवीएम के व्यवहार को बदलने की कोशिश कर रहे हैं जो मैवेन चला रहा है, तो एमवीएन लॉन्च करने से पहले पर्यावरण में MAVEN_OPTS में विकल्प जोड़ें।

+0

यह जावा 8 में पेश किए गए जेएक्सबी 1.5 में नई एक्सएमएल सुरक्षा गुणों के लिए प्रासंगिक है, इसलिए यह वास्तव में "मेवेन ग्लोबल" नहीं होना चाहिए बल्कि स्कीमा संकलन के लिए होना चाहिए। http://docs.oracle.com/javase/tutorial/jaxp/properties/properties.html – lexicore

+0

कौन जानता है कि उसके पास मेवेन प्लगइन है, तो वह आपके मेवेन प्लगइन का उपयोग करता है, या वह किसी अन्य मेवेन प्लगइन का उपयोग करता है? – bmargulies

+0

@margulies मुझे लगता है कि ओपी ने स्पष्ट रूप से कहा है कि वह * JAXB2 मेवेन प्लगइन्स में से एक का उपयोग कर रहा है ("मेरे पास एक मैवेन प्लगइन (जैक्सबी 2) है ..." और टैग से पता चलता है कि वह मेरा उपयोग करता है। एक नोट मेरे जवाब में "अगर ..." है। – lexicore

16

मैं जैक्सबी 2-मेवेन-प्लगइन के साथ काम करते समय इस मुद्दे पर आया। मुझे maven-jabx2-plugin के लिए संबंधित जिरा मुद्दा मिला - https://java.net/projects/maven-jaxb2-plugin/lists/issues/archive/2014-03/message/0

इस समस्या के अनुसार Stephan202 ने गुण-मैवेन-प्लगइन का उपयोग करने का सुझाव दिया जो आकर्षण की तरह काम करता था। यहां उनके पोस्ट से एक नमूना कोड है -

<plugin> 
<!-- We use this plugin to ensure that our usage of the 
maven-jaxb2-plugin is JDK 8 compatible in absence of a fix 
for https://java.net/jira/browse/MAVEN_JAXB2_PLUGIN-80. --> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>properties-maven-plugin</artifactId> 
    <version>1.0-alpha-2</version> 
    <executions> 
     <execution> 
      <id>set-additional-system-properties</id> 
      <goals> 
       <goal>set-system-properties</goal> 
      </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <properties> 
      <property> 
       <name>javax.xml.accessExternalSchema</name> 
       <value>file,http</value> 
      </property> 
     </properties> 
    </configuration> 
</plugin> 
+0

अच्छा जवाब - धन्यवाद। मुझे ऐसे समाधान की आवश्यकता है जो अल्फा संस्करणों का उपयोग न करे क्योंकि मेरी कंपनियां नियम हैं। – Josh

+0

यदि आपके पास वास्तव में बाहरी स्कीमा नहीं हैं, तो यह केवल संपत्ति को 'फ़ाइल' पर काम कर सकता है। Org.jvnet.ws.wadl प्राप्त करने के लिए मुझे यही चाहिए: wadl-client-plugin: 1.1.6 जावा के साथ काम करना 8. –

7

पुन; पोस्ट - "मैं एक समाधान है कि अल्फा संस्करण का उपयोग नहीं करता जरूरत है कि के रूप में मेरे कंपनियों नियम है -।"

मूल्य 1.0 & के संस्करण बदलने के लिए 'सभी' यह मेरे लिए काम कर गया:

<plugin> 
<!-- We use this plugin to ensure that our usage of the 
maven-jaxb2-plugin is JDK 8 compatible in absence of a fix 
for https://java.net/jira/browse/MAVEN_JAXB2_PLUGIN-80. --> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>properties-maven-plugin</artifactId> 
    <!-- 
    <version>1.0-alpha-2</version> --> 
    <version>1.0.0</version> 
    <executions> 
     <execution> 
      <id>set-additional-system-properties</id> 
      <goals> 
       <goal>set-system-properties</goal> 
      </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <properties> 
      <property> 
       <name>javax.xml.accessExternalSchema</name> 
       <value>all</value> 
      </property> 
     </properties> 
    </configuration> 
</plugin> 
2

यह मेरे लिए काम किया है:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>jaxws-maven-plugin</artifactId> 
    <executions> 
     <execution> 
      <phase>process-sources</phase> 
      <goals> 
       <goal>wsimport</goal> 
      </goals> 
      <configuration> 
       <vmArgs> 
        <arg>-Djavax.xml.accessExternalSchema=all</arg> 
       </vmArgs> 
       <keep>true</keep> 
       <verbose>true</verbose> 
       <wsdlDirectory>${project.build.directory}/wsdl</wsdlDirectory> 
       <wsdlFiles> 
        <wsdlFile>ServiceWsService.wsdl</wsdlFile> 
       </wsdlFiles> 
       <bindingFiles> 
        <bindingFile>custom-binding.xml</bindingFile> 
        <bindingFile>custom-binding2.xml</bindingFile> 
       </bindingFiles>       
      </configuration> 
     </execution> 
    </executions> 
</plugin> 
+2

कृपया बताएं कि यह आपके लिए क्यों काम करता है और यह ओपी की मदद क्यों करता है - न केवल कोड को डंप करें । –

संबंधित मुद्दे