2009-10-06 13 views

उत्तर

3

xml-maven-plugin है जो यह जांच सकता है कि XML फ़ाइलें matching an XML schema हैं लेकिन मुझे नहीं लगता कि यह रिपोर्ट जेनरेट कर सकता है।

4

एक्सएमएल-Maven-प्लगइन अच्छे प्रकार से निर्मित की जाँच करेगा और वैकल्पिक रूप से एक स्कीमा के विरुद्ध सत्यापन की validate goal। यदि सत्यापन विफल रहता है तो निर्माण विफल हो जाएगा।

प्लगइन किसी भी रिपोर्ट का उत्पादन नहीं करता है, क्या आप रुचि के बाहर एक रिपोर्ट में चाहेगा? अमान्य फाइलों के बारे में जानकारी?

यहाँ एक उदाहरण उपयोग है:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>xml-maven-plugin</artifactId> 
    <executions> 
     <execution> 
     <goals> 
      <goal>validate</goal> 
     </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <validationSets> 
     <validationSet> 
      <dir>src/main/xsd</dir> 
      <systemId>src/main/xmlschema.xml</systemId> 
     </validationSet> 
     </validationSets> 
    </configuration> 
    </plugin> 
+2

हाँ, validatation त्रुटि रिपोर्ट में मदद मिलेगी PMD या Findbug जावा कोड के लिए करता है की तरह एक्सएमएल फ़ाइलें में posible त्रुटियों का कहना है। मैंने देखा है कि कई डेवलपर्स को छोड़ xml या jsp सत्यापन त्रुटियों/चेतावनी परियोजना के साथ काम करते हुए, हो सकता है क्या संभावित क्रम त्रुटियों का कारण। – cetnar

+0

सहमत। बस का निर्माण विफल है, लेकिन निर्माण असफल और स्कीमा सत्यापन त्रुटि मुद्रित करने के लिए नहीं के रूप में उपयोगी ... अब है कि सुपर उपयोगी है। विशेष रूप से यदि आप केवल आईडीई का उपयोग करते हैं तो आपको कुछ डीबग करने की आवश्यकता होती है। – avgvstvs

0

मैं (मुझे इस के लिए शुरू करने के लिए Pascal Thivent और Rick Seller करने के लिए धन्यवाद) का इस्तेमाल किया है कुछ समय के लिए xml-maven-plugin, लेकिन इसके साथ कुछ समस्या थी।

मैं एक XML दस्तावेज़ को मान्य कर रहा था। किसी बिंदु पर हम एक्सएमएल दस्तावेज़ को दो फाइलों में विभाजित करते हैं, दोनों अपनी उपनिर्देशिका में। उस बिंदु पर xml-maven-plugin ने अब कुछ भी मान्य नहीं किया क्योंकि फ़ाइल स्थानांतरित हो गई थी, लेकिन इसके बारे में शिकायत भी नहीं की थी। व्यक्तिगत रूप से मैंने कॉन्फ़िगरेशन को बहुत सहज नहीं पाया और डीबग करने के लिए थोड़ा मुश्किल है यदि यह आपकी अपेक्षा नहीं करता है।

तो मेरे लिए मैं schemavalidate चींटी maven-antrun-plugin के साथ संयुक्त कार्य पुनः खोजने के लिए खुश था। सब कुछ मुझे चाहिए और अधिक।

नीचे दिए गए उदाहरण में मैं जांचता हूं कि फ़ाइलों को वास्तव में चुना जाता है। बेशक आप अपनी विशिष्ट जरूरतों के लिए इसे तैयार कर सकते हैं। बोनस के रूप में (विषय से थोड़ा मुश्किल) उदाहरण के लिए एक एक्सएसडी के पथ को कैसे पकड़ता है इसका एक उदाहरण है जो एक निर्भरता के रूप में डाउनलोड किया जाता है।

<build> 
    <plugins> 
     <plugin><groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-antrun-plugin</artifactId><version>1.8</version> 
      <executions><execution> 
       <id>validate-xml-document-files-against-schema</id> 
       <phase>test</phase> 
       <goals><goal>run</goal></goals> 
       <configuration> 
        <target> 
         <copy file="${maven.dependency.com.mycompany.some-schema.xsd.path}" tofile="${xml-validation-dir}/some-schema.xsd" /> 
         <resourcecount property="xml.count"> 
          <fileset dir="${xml-validation-dir}" includes="**/*.xml" /> 
         </resourcecount> 
         <fail message="fileset does not match any xml file (use same fileset for actual validation)"> 
          <condition><equals arg1="${xml.count}" arg2="0" /></condition> 
         </fail> 
         <echo message="validating ${xml.count} xml files against some-schema" /> 
         <schemavalidate> 
          <schema namespace="http://mycompany.com/some-namespace" file="${xml-validation-dir}/some-schema.xsd" /> 
          <fileset dir="${xml-validation-dir}" includes="**/*.xml" /> 
         </schemavalidate> 
         <echo message="all ${xml.count} xml documents are valid" /> 
        </target> 
       </configuration> 
      </execution></executions> 
     </plugin> 
    </plugins> 
</build> 

<dependencies> 
    <dependency> 
     <groupId>com.mycompany</groupId> 
     <artifactId>some-schema-artifact</artifactId> 
     <version>1.2.3</version> 
     <type>xsd</type> 
    </dependency> 
</dependencies> 

दी, यह वास्तव में काम करने का Maven तरह से फिट नहीं करता है, लेकिन यह मेरे लिए काम किया है और हो सकता है किसी और को इस विकल्प को जानने से मदद की है।