Eclipse在pom.xml文件中显示错误:cvc-datatype-valid.1.2.1:' $ {MYVAR}'不是' boolean'的有效值。

时间:2015-01-12 18:15:52

标签: eclipse validation maven pom.xml

我有一个在命令行上构建良好的Maven项目。我想在Eclipse Luna 4.4.1中编辑项目文件,但是当我加载项目时,它会在我的pom.xml文件中报告以下错误:

  

cvc-datatype-valid.1.2.1:'$ {MYVAR}'不是'boolean'的有效值

     

cvc-type.3.1.3:元素'enabled'的'$ {MYVAR}'值无效。

此问题与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>

3 个答案:

答案 0 :(得分:5)

Eclipse正在验证POM的XSD,它表示此XML元素的类型为boolean。

布尔值的有效值为true / false,因此当它看到$ {MYVAR}时会引发验证错误...因为Eclipse的插件不执行从“$ {MYVAR}”到“false”的变量转换

但是,如果你进行mvn安装它没有问题,这意味着pom是正确的。

结论,这是一个Elipse插件问题,所以你只能忽略它。

答案 1 :(得分:1)

我认为这是一个时间/订单问题。 maven首先尝试在执行之前构建整个项目模型。所以要收集所有pom.xml来构建它使用存储库的项目的整个模型。在此之后它使用属性并替换有效项目模型(pom.xml)的所有变量

如果您在定义之外使用$ {MYVAR},那应该没问题。对吗?

答案 2 :(得分:0)

这似乎是一个Eclipse问题,因为Eclipse开发人员拒绝承认模板化XML和运行时XML之间的区别。只有在后一种情况下验证才有意义。

他们有一个很好的概念,允许您打开/关闭验证,或将某些转换为警告。但是,在这种情况下,此选项不存在。

人们建议您可以关闭此验证,但我试图了解情况。就个人而言,我对Eclipse所做的任何XSD验证都不感兴趣。

我唯一知道的选择是游说https://bugs.eclipse.org/bugs/