2009-10-06 12 views

Respuesta

4

El validate goal del xml-maven-plugin comprobará la buena formación y opcionalmente validará con un esquema. La compilación fallará si la validación falla.

El complemento no genera ningún informe, ¿qué le gustaría en un informe que le interese? información sobre los archivos no válidos?

Aquí hay un ejemplo de uso:

<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

Sí, los informes de errores de validación ayudarán a señalar posibles errores en los archivos xml como PMD o Findbug para el código de Java. Me he dado cuenta de que muchos desarrolladores omiten los errores/advertencias de validación xml o jsp mientras trabajan con el proyecto, lo que puede causar posibles errores de tiempo de ejecución. – cetnar

+0

De acuerdo. No es tan útil para simplemente fallar la compilación, sino para fallar la compilación e imprimir el error de validación del esquema ... ahora eso es súper útil. Especialmente si solo usa IDEs cuando necesita depurar algo. – avgvstvs

0

He utilizado el xml-maven-plugin durante algún tiempo (gracias a Pascal Thivent y Rick Seller por introducirme en esto), pero tuvo algunos problemas con él.

Estaba validando un documento XML. En algún momento dividimos el documento XML en dos archivos, ambos en su propio subdirectorio. En ese momento, el complemento xml-maven ya no validaba nada porque el archivo se había movido, pero tampoco se quejaba al respecto. También personalmente encontré que la configuración no es demasiado intuitiva y es un poco difícil de depurar si no lo hace.

Así que, para mí, me alegré de redescubrir la tarea Ant schemavalidate combinada con maven-antrun-plugin. Hice todo lo que necesitaba y más.

En el siguiente ejemplo verifico que los archivos están realmente seleccionados. Por supuesto, puede adaptar esto para sus necesidades específicas. Como una ventaja (un poco fuera de tema) un ejemplo de cómo agarro la ruta de un xsd que se descarga como una dependencia.

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

Por supuesto, esto no encaja realmente en el modo experto de trabajar, pero funcionó para mí y tal vez alguien más es ayudado por conocer esta opción.

Cuestiones relacionadas