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/