pom.xml项目标签中的命名空间声明是否有需要或用法?
<project xmlns="http://maven.apache.org/POM/4.0.0" ...
我们有一个解析pom.xmls的工具,但是对于包含命名空间声明的pom.xmls,它失败了。
答案 0 :(得分:1)
通常,将命名空间信息添加到xml文件是一种很好的方式。因此,将这些信息添加到您的pom文件中是一种很好的方式,如果您使用Eclipse等工具,这可能会有所帮助。此外,您还可以根据XSD文件验证您的xml文件。
除此之外,如果您的工具存在此类命名空间的问题,那么它不是一个好工具,因为它应该正确处理命名空间定义。
如果您想阅读pom文件,那么实现正确处理命名空间等的问题不应该是一个问题。
读取pom文件需要以下几行:
MavenXpp3Reader mavenReader = new MavenXpp3Reader();
Model pom = mavenReader.read(new FileReader(pomFile));
答案 1 :(得分:1)
Maven的所有文档都告诉您使用命名空间,并暗示它是必需的。例如,the POM reference显示:
<project xmlns="http://maven.apache.org/POM/4.0.0"
但是,Maven用于读取pom.xml
文件MavenXpp3Reader
的doesn't check the namespace at all类。任何值(甚至没有值)都不会阻止Maven解析pom。 (甚至correct use of namespaces can cause Maven to fail to parse。)
然而,就像你有一个无法解析有效poms的工具一样,还有其他工具可以重新实现pom解析并需要命名空间声明。生产poms可能会导致互操作性问题。
总结;如果你正在使用Maven构建它,你将会侥幸成功,但是在你的代码中修复bug至关重要。