2012-08-31 18 views
5

मैं दो XSD स्कीमा से स्रोतों को उत्पन्न करने की कोशिश कर रहा हूं। मेरे JAXB Maven प्लगइन इस तरह दिखता है:मेवेन जेएक्सबी प्लगइन केवल एक एक्ससीक्यूशन निष्पादित करता है

<plugin> 
    <groupId>com.sun.tools.xjc.maven2</groupId> 
    <artifactId>maven-jaxb-plugin</artifactId> 
    <version>1.1.1</version> 
    <executions> 
     <execution> 
      <id>GenerateKenexa</id> 
      <goals> 
       <goal>generate</goal> 
      </goals> 
      <configuration> 
       <includeBindings> 
        <includeBinding>**/jaxb-bindings-kenexa.xml</includeBinding> 
       </includeBindings> 
       <includeSchemas> 
        <includeSchema>**/KenexaXMLConfiguration.xsd</includeSchema> 
       </includeSchemas> 
      </configuration> 
     </execution> 
     <execution> 
      <id>GenerateTalentQ</id> 
      <goals> 
       <goal>generate</goal> 
      </goals> 
      <configuration> 
       <includeBindings> 
        <includeBinding>**/jaxb-bindings-talentq.xml</includeBinding> 
       </includeBindings> 
       <includeSchemas> 
        <includeSchema>**/TalentQXMLConfiguration.xsd</includeSchema> 
       </includeSchemas> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

पहले एक ठीक उत्पन्न हो जाता है। लेकिन दूसरा नहीं है। मैं मेवेन आउटपुट में देखता हूं:

[INFO] --- maven-jaxb-plugin:1.1.1:generate (GenerateKenexa) @ online.tests.management --- 
[INFO] Compiling file:/D:/Projects/GTIWebApplications/gti_online_tests_management/src/main/resources/xsd/KenexaXMLConfiguration.xsd 
[INFO] Writing output to D:\Projects\GTIWebApplications\gti_online_tests_management\target\generated-sources\xjc 
[INFO] 
[INFO] --- maven-jaxb-plugin:1.1.1:generate (GenerateTalentQ) @ online.tests.management --- 
[INFO] files are up to date 

यह कहता है कि फाइलें अद्यतित हैं, लेकिन वे भी उत्पन्न नहीं हुई हैं। क्या गलत हो सकता है?

उत्तर

4

मैं समस्या हल । मैंने maven jaxb प्लगइन को maven jaxb2 प्लगइन में बदल दिया है और अब सबकुछ काम करता है। अब मेरी Maven विन्यास इस तरह दिखता है:

<plugin> 
    <groupId>org.jvnet.jaxb2.maven2</groupId> 
    <artifactId>maven-jaxb2-plugin</artifactId> 
    <version>0.8.2</version> 
    <executions> 
     <execution> 
      <id>GenerateKenexa</id> 
      <goals> 
       <goal>generate</goal> 
      </goals> 
      <configuration> 
       <schemaDirectory>src/main/resources/xsd</schemaDirectory> 
       <schemaIncludes> 
        <include>KenexaXMLConfiguration.xsd</include> 
       </schemaIncludes> 
       <generatePackage>com.groupgti.onlinetest.kenexa.jaxb</generatePackage> 
       <generateDirectory>${project.build.directory}/generated-sources/kenexa</generateDirectory> 
      </configuration> 
     </execution> 
     <execution> 
      <id>GenerateTalentQ</id> 
      <goals> 
       <goal>generate</goal> 
      </goals> 
      <configuration> 
       <schemaDirectory>src/main/resources/xsd</schemaDirectory> 
       <schemaIncludes> 
        <include>TalentQXMLConfiguration.xsd</include> 
       </schemaIncludes> 
       <generatePackage>com.groupgti.onlinetest.talentq.jaxb</generatePackage> 
       <generateDirectory>${project.build.directory}/generated-sources/talentq</generateDirectory> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 
+0

धन्यवाद। वही समस्या, एक ही समाधान। –

1

पहले, मैं <outputdirectory>${basedir}/target/generated-sources/xjc</outputdirectory>

और दूसरा प्रत्येक XSD के लिए अलग से उत्पादन फ़ोल्डरों निर्दिष्ट करने के लिए सिफारिश करेंगे, अलग प्लगइन प्रविष्टियों, अलग से कोई फांसी के रूप में सेट अप करने के लिए प्रयास करें:

<plugin> 
    <groupId>com.sun.tools.xjc.maven2</groupId> 
... 
<includeSchema>**/KenexaXMLConfiguration.xsd... 
... 
</plugin> 
<plugin> 
    <groupId>com.sun.tools.xjc.maven2</groupId> 
... 
<includeSchema>**/TalentQXMLConfiguration.xsd... 
... 
</plugin> 
+0

यदि मैं उन्हें अलग-अलग प्लगइन में अलग करता हूं तो केवल अंतिम को निष्पादित किया जाता है, पहला वाला नहीं होता है, और मेरा कोड संकलित नहीं होता है। और जहां मुझे यह जोड़ना चाहिए? ऐसा कोई तत्व उपलब्ध नहीं है। –

11

के रूप में मैंने किया था इस सवाल का में आ रहा है, एक साल बाद लोगों के लिए:/

समस्या

Maven-jaxb2-प्लगइन रूप में अच्छी तरह में बनी रहती है, यह शायद किसी प्रकार का है 0.8.3 में बग का। जब आप एक ही निर्देशिका में फ़ाइलों को उत्पन्न करते हैं, तो प्लगइन "सोचता है" कि फाइलें पहले ही जेनरेट की गई हैं और उस दूसरे निष्पादन को छोड़ देती हैं।

मैंने पाया क्रम दूसरा निष्पादन उत्पन्न करने के लिए आप तर्क

<forceRegenerate>true</forceRegenerate> 

कॉन्फ़िगरेशन अनुभाग में स्थापित करने के लिए होगा।

1

मैं जैक्सबी 2 का उपयोग कर रहा हूं, जबकि मैं यहां पहुंचने पर समस्या का सामना कर रहा था। मैंने नीचे दिए गए टुकड़े को अन्य लोगों के उत्तरों से कॉन्फ़िगर में जोड़ा और यह अब काम करता है।

<generateDirectory>${project.build.directory}/generated-sources/kenexa</generateDirectory> 

इसके अलावा एक अनूठा निष्पादन आईडी

<id>GenerateKenexa</id> 

की जरूरत है लेकिन अलग अलग निर्देशिकाओं कोड अंत में, दो शीर्ष स्तर पैकेज में निहित है इसलिए बनाना: पिछले के लिए बात यह है कि किया चाल होना चाहिए उत्तर देता है मैं उपयोग कर रहा हूं:

<forceRegenerate>true</forceRegenerate> 
+0

अलग-अलग निर्देशिकाओं का उपयोग करते समय, आपको अब की आवश्यकता नहीं है, कम से कम प्लगइन के संस्करण 0.12.1 के साथ नहीं। – JSamir

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