如何在Maven構建過程中針對DTD或XSD架構驗證XML文檔?Maven中的XML DTD/Schema驗證
6
A
回答
3
有一個xml-maven-plugin可以檢查XML文件是否爲matching an XML schema,但我不認爲它可以生成報告。
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>
0
我已經使用了xml-maven-plugin一段時間(感謝Pascal Thivent和Rick Seller介紹我到這一點),但有一些問題吧。
我正在驗證XML文檔。在某些時候,我們將XML文檔分成兩個文件,都在他們自己的子目錄中。那時,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>
當然,這並不真正適合在工作的行家方式,但它的工作對我來說,也許別人是通過了解此選項幫助。
相關問題
- 1. 驗證Java中的Maven值
- 2. XML驗證vs Java驗證
- 3. 例外maven - 驗證
- 4. maven surefire驗證java.lang.ClassNotFoundException
- 5. C#中的XML Schema驗證
- 6. Eclipse RCP中的XML驗證
- 7. XMLReader中的XML驗證()
- 8. 驗證Eclipse中的XML
- 9. Eclipse中的XML驗證
- 10. 驗證XML與XML ::的libxml
- 11. XML驗證libxml的
- 12. Regex的XML驗證
- 13. Eclipse驗證XML
- 14. C#xml驗證
- 15. XML XSD驗證
- 16. Eclipse xml驗證
- 17. Aptana XML驗證
- 18. PHP XML驗證
- 19. stax xml驗證
- 20. Powershell XML驗證
- 21. XML驗證
- 22. 在Android中驗證XML Schema
- 23. 在Flex3 Air中驗證Xml
- 24. XML和XML Schema驗證
- 25. 驗證Maven原型屬性
- 26. Maven驗證錯誤Artifactory
- 27. Maven - 同行未驗證
- 28. XML架構驗證 - 現場驗證
- 29. xml驗證:驗證URI類型
- 30. XML驗證不驗證功能
是的,驗證錯誤報告將幫助指出xml文件(如PMD或Findbug爲java代碼執行)中的可能錯誤。我注意到許多開發人員在處理項目時跳過了xml或jsp驗證錯誤/警告,這可能會導致潛在的運行時錯誤。 – cetnar 2009-10-06 21:06:53
同意。對構建失敗並不有用,但是失敗構建並打印架構驗證錯誤......現在這是非常有用的。尤其是當你需要調試某些東西時只使用IDE。 – avgvstvs 2015-11-10 16:07:19