2009-10-06 10 views

Odpowiedz

4

Plik validate goal wtyczki xml-maven sprawdzi poprawność kształtu i opcjonalnie sprawdzi poprawność względem schematu. Kompilacja zakończy się niepowodzeniem, jeśli sprawdzanie poprawności zakończy się niepowodzeniem.

Wtyczka nie generuje żadnego raportu, czego byś chciał (a) w raporcie będącym przedmiotem zainteresowania? informacje o nieprawidłowych plikach?

Oto przykład użycia:

<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

Tak, raporty o błędach poprawności pomogą wskazać prawdopodobne błędy w plikach XML, takich jak PMD lub Findbug dla kodu Java. Zauważyłem, że wielu programistów pomija błędy/ostrzeżenia dotyczące sprawdzania poprawności xml lub jsp podczas pracy z projektem, co może powodować potencjalne błędy środowiska wykonawczego. – cetnar

+0

Uzgodnione. Nie jest tak przydatny, aby po prostu zawieść kompilację, ale aby nie skompilować i wydrukować błędu sprawdzania poprawności schematu ... teraz jest bardzo przydatny. Zwłaszcza jeśli używasz IDE tylko wtedy, gdy chcesz coś debugować. – avgvstvs

0

Użyłem xml-maven-plugin jakiegoś czasu (dzięki Pascal Thivent i Rick Seller za wprowadzenie mnie do tego), ale miał pewne problemy z nim.

Sprawdzałem poprawność dokumentu XML. W pewnym momencie dzielimy dokument XML na dwa pliki, oba w ich własnym podkatalogu. W tym momencie wtyczka xml-maven już nic nie sprawdzała, ponieważ plik został przeniesiony, ale też nie narzekał na to. Również osobiście znalazłem konfigurację niezbyt intuicyjną i nieco trudną do debugowania, jeśli tego się nie spodziewasz.

Tak więc dla mnie z przyjemnością odkryłem na nowo zadanie Ant schemavalidate połączone z maven-antrun-plugin. Czy wszystko, co potrzebne i więcej.

W poniższym przykładzie sprawdzam, czy pliki są faktycznie wybrane. Oczywiście możesz to dostosować do swoich konkretnych potrzeb. Jako bonus (trudny do odgadnięcia) przykład, jak pobieram ścieżkę xsd, która jest pobierana jako zależność.

<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> 

prawda, to tak naprawdę nie pasuje w sposób maven pracy, ale pracował dla mnie, a może ktoś inny pomógł znając tę ​​opcję.