Eclipse 在 pom.xml 文件中显示错误:cvc-datatype-valid.1.2.1: '${MYVAR}' 不是 'boolean' 的有效值
Eclipse shows errors in pom.xml file: cvc-datatype-valid.1.2.1: '${MYVAR}' is not a valid value for 'boolean'
我有一个在命令行上构建良好的 Maven 项目。我想在 Eclipse Luna 4.4.1 中编辑项目文件,但是当我加载项目时,它在我的 pom.xml 文件中报告以下错误:
cvc-datatype-valid.1.2.1: '${MYVAR}' is not a valid value for 'boolean'
cvc-type.3.1.3: The value of '${MYVAR}' of element 'enabled' is not valid.
此问题与 Validating Maven pom.xml when boolean is a property 类似,目前还没有任何答案。虽然我可以在命令行上通过 Maven 进行编译,但令人恼火的是 Eclipse 不断将这些报告为错误。有没有办法在不禁用 pom.xml 文件其余部分的验证的情况下消除这些错误?
根据 http://maven.apache.org/pom.html#Properties,我正确引用了 MYVAR
属性。
以下是我的pom.xml文件的相关内容:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>myproject</artifactId>
<groupId>org.mydomain</groupId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<properties>
<spring-version>3.0.2.RELEASE</spring-version>
<MYVAR>false</MYVAR>
</properties>
<repositories>
<repository>
<id>internal_repo</id>
<name>my internal repository for offline use</name>
<url>file://${INT_REPO_HOME}/java/maven_repo</url>
<layout>default</layout>
</repository>
<repository>
<id>central</id>
<url>http://repo1.maven.org/maven2</url>
<releases>
<enabled>${MYVAR}</enabled>
</releases>
<snapshots>
<enabled>${MYVAR}</enabled>
</snapshots>
</repository>
</repositories>
</project>
我认为这是一个 timeing/order 问题。 maven 在执行之前首先尝试构建整个项目模型。所以要收集所有 pom.xml 来构建它使用存储库的项目的整个模型。在此之后,它使用属性并替换有效项目模型的所有变量 (pom.xml)
如果你在定义之外使用 ${MYVAR} 应该没问题..对吧?
Eclipse 正在验证 POM 的 XSD,该 XML 元素是布尔类型。
布尔值的有效值为 true/false 所以当它看到 ${MYVAR} 时会引发验证错误...因为 Eclipse 的插件不会从“${MYVAR}”进行变量转换至 "false".
但是,如果您执行 mvn install,它可以正常工作,这意味着 pom 是正确的。
结论,这是一个Elipse插件问题,所以你只能忽略它。
这似乎是一个 Eclipse 问题,因为 Eclipse 开发人员拒绝承认模板 XML 和运行时 XML 之间的区别。只有在后一种情况下验证才重要。
他们有一个很好的概念,允许您转换验证 on/off,或将某些验证转换为警告。但是,在这种情况下,此选项不存在。
人们建议您可以关闭此验证,但我已经尝试了解是否有用。就个人而言,我对 Eclipse 进行的任何 XSD 验证不感兴趣。
我知道的唯一选择是游说 https://bugs.eclipse.org/bugs/
我有一个在命令行上构建良好的 Maven 项目。我想在 Eclipse Luna 4.4.1 中编辑项目文件,但是当我加载项目时,它在我的 pom.xml 文件中报告以下错误:
cvc-datatype-valid.1.2.1: '${MYVAR}' is not a valid value for 'boolean'
cvc-type.3.1.3: The value of '${MYVAR}' of element 'enabled' is not valid.
此问题与 Validating Maven pom.xml when boolean is a property 类似,目前还没有任何答案。虽然我可以在命令行上通过 Maven 进行编译,但令人恼火的是 Eclipse 不断将这些报告为错误。有没有办法在不禁用 pom.xml 文件其余部分的验证的情况下消除这些错误?
根据 http://maven.apache.org/pom.html#Properties,我正确引用了 MYVAR
属性。
以下是我的pom.xml文件的相关内容:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>myproject</artifactId>
<groupId>org.mydomain</groupId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<properties>
<spring-version>3.0.2.RELEASE</spring-version>
<MYVAR>false</MYVAR>
</properties>
<repositories>
<repository>
<id>internal_repo</id>
<name>my internal repository for offline use</name>
<url>file://${INT_REPO_HOME}/java/maven_repo</url>
<layout>default</layout>
</repository>
<repository>
<id>central</id>
<url>http://repo1.maven.org/maven2</url>
<releases>
<enabled>${MYVAR}</enabled>
</releases>
<snapshots>
<enabled>${MYVAR}</enabled>
</snapshots>
</repository>
</repositories>
</project>
我认为这是一个 timeing/order 问题。 maven 在执行之前首先尝试构建整个项目模型。所以要收集所有 pom.xml 来构建它使用存储库的项目的整个模型。在此之后,它使用属性并替换有效项目模型的所有变量 (pom.xml)
如果你在定义之外使用 ${MYVAR} 应该没问题..对吧?
Eclipse 正在验证 POM 的 XSD,该 XML 元素是布尔类型。
布尔值的有效值为 true/false 所以当它看到 ${MYVAR} 时会引发验证错误...因为 Eclipse 的插件不会从“${MYVAR}”进行变量转换至 "false".
但是,如果您执行 mvn install,它可以正常工作,这意味着 pom 是正确的。
结论,这是一个Elipse插件问题,所以你只能忽略它。
这似乎是一个 Eclipse 问题,因为 Eclipse 开发人员拒绝承认模板 XML 和运行时 XML 之间的区别。只有在后一种情况下验证才重要。
他们有一个很好的概念,允许您转换验证 on/off,或将某些验证转换为警告。但是,在这种情况下,此选项不存在。
人们建议您可以关闭此验证,但我已经尝试了解是否有用。就个人而言,我对 Eclipse 进行的任何 XSD 验证不感兴趣。
我知道的唯一选择是游说 https://bugs.eclipse.org/bugs/