2014-09-23 52 views
0

pom.xml的项目标签中的名称空间声明是否有任何需要或用法?必需的pom.xml名称空间?

<project xmlns="http://maven.apache.org/POM/4.0.0" ... 

我们有一个工具,分析pom.xmls但它没有包含一个命名空间声明pom.xmls。

回答

1

通常,将命名空间信息添加到xml文件是一种很好的风格。因此,将这些信息添加到您的pom文件是一种很好的风格,如果您使用的是Eclipse等工具,这些信息尤其有用。此外,您还可以验证xml文件是否符合在此处提供的XSD文件。

除此之外,如果你的工具有这样的命名空间的问题,它不是一个好的工具,因为它应该正确地处理命名空间定义。

如果你喜欢阅读POM文件它不应该以实施其正确处理命名空间等问题

读取POM文件包含以下各行需要:

MavenXpp3Reader mavenReader = new MavenXpp3Reader(); 
Model pom = mavenReader.read(new FileReader(pomFile)); 
+0

“好风格”是我的问题没有答案。 Eclipse提供了在pom.xml中没有命名空间的自动完成和验证功能 我知道,在声明的命名空间上失败时,该工具不能很好地工作。 MavenXpp3Reader非常适合阅读pom.xmls,但MavenXpp3Writer并不适合用于处理书写pom.xmls 对于我们来说,最快速和最安全的解决方案是从pom.xmls中删除几个命名空间,但是我想如果存在是他们的任何用法。 – BlackEye 2014-09-24 09:34:05

+0

我会建议看看版本的maven插件,它确切地做你想做的事情。 – khmarbaise 2014-09-24 10:50:24

1

所有Maven的文档告诉你使用命名空间,并暗示它是必需的。例如,the POM reference显示:

<project xmlns="http://maven.apache.org/POM/4.0.0" 

然而,Maven使用读取pom.xml文件doesn't check the namespace at allMavenXpp3Reader类。任何值(甚至没有值)都不会阻止Maven解析pom。 (甚至correct use of namespaces can cause Maven to fail to parse。)

但是,就像你有一个工具无法解析有效的poms一样,还有其他工具在那里重新实现pom解析并需要命名空间声明。没有生产poms可能会导致互操作性问题。

总之;如果您使用Maven构建的话,您会摆脱这种困境,但是修复代码中的错误将更可取。

相关问题