2009-10-06 9 views

答えて

4

xml-maven-pluginの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

はい、バリデーションエラーレポートは、PMDやFindbugのようなXMLファイルのポーズ可能なエラーをJavaコードに対して指摘するのに役立ちます。私は、多くの開発者がプロ​​ジェクトで作業中にxmlまたはJSPの検証エラー/警告をスキップしていることに気付きました。潜在的なランタイムエラーの原因となる可能性があります。 – cetnar

+0

合意。ビルドに失敗するだけでなく、ビルドに失敗してスキーマ検証エラーを出力するのは便利ではありません...今は非常に便利です。特に、何かをデバッグする必要があるときだけIDEを使用する場合。 – avgvstvs

0

私はいくつかの時間(これに私を導入するためのPascal ThiventRick Sellerのおかげで)のためにxml-maven-pluginを使用しますが、それにはいくつかの問題がありました。

私はXML文書を検証していました。ある時点で、XML文書を2つのファイルに分割します。どちらも、それぞれのサブディレクトリーにあります。その時点で、xml-maven-pluginはファイルが移動されたために何も検証しませんでしたが、それについても不平を言っていませんでした。また、個人的に私は設定があまりにも直感的ではなく、あなたが期待していなければデバッグするのが少し難しいと感じました。

私のために、schemavalidateのAntタスクとmaven-antrun-pluginを組み合わせて再発見することができました。私が必要としていたすべてをしました。

以下の例では、実際にファイルが選択されていることを確認しています。もちろん、あなたのニーズに合わせて調整することができます。ボーナス(難しい話題です)として、依存関係としてダウンロードされたxsdのパスを取得する方法の例です。確かに

<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の方法に適合していないが、それは私のために働いた、多分他の誰かがこのオプションを知ることによって助けられます。

関連する問題