【问题标题】:Maven plugin dependency cannot use parent pom propertyMaven 插件依赖不能使用父 pom 属性
【发布时间】:2015-01-10 09:44:00
【问题描述】:

我在 Maven 中遇到了一个奇怪的边缘用例,很好奇它为什么会这样。

我正在我的父项目中定义一个属性,如下所示:

  <properties>
      <some.property.version>1.0.0.0</some.property.version>
  </properties>

现在,在一个模块中,我为插件设置了一个依赖版本,如下所示:

  <build>
      <plugins>
          <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>bob</artifactId>
              <version>1.0.0.0</version>
              <dependencies>
                  <dependency>
                      <groupId>org.example</groupId>
                      <artifactId>example</artifactId>
                      <version>${some.property.version}</artifactId>
                  </dependency>
              </dependencies>
          </plugin>
      </plugins>
  </build>

这会导致 Maven 吐出一个错误:

[ERROR] 'build.plugins.plugin[org.apache.maven.plugins:bob].dependencies.dependency.version' for org.example:example:jar 必须是有效版本,但为 '${some.属性.版本}'。 @ 第 350 行,第 16 列

对我来说奇怪的是,如果我将定义的属性向下移动到模块本身,Maven 编译得很好。这是一个错误吗?还是对模块插件中父 pom 属性的可见性有限制?

【问题讨论】:

  • 再想一想,这可能最好在邮件列表中提供...稍后将根据 Maven 人员的反馈进行更新!

标签: maven maven-3 maven-plugin


【解决方案1】:

来自 Apache Maven 分发列表的异常快速响应!父 pom 已被重构,并且模块指向过时的父级 artifactId。向罗伯特致敬!

嗨,

这让我想知道是否使用了“正确的”父母,所以请加倍 检查 groupId、artifactId 和版本。如果父模块和模块 是同一个多模块的一部分,请确保 relativePath 是 正确(默认为 ../pom.xml)你也可以使用“mvn org.apache.maven.plugins:maven-help-plugin:2.2:effective-pom" 到 验证该属性是否确实具有预期值。如果 这一切都如预期的那样,那么它似乎是一个错误。

谢谢,罗伯特

【讨论】:

  • @RobertScholte 如果插件中的依赖项由父级管理,我们可以在没有版本的情况下指定它,就像我们为项目依赖项所做的那样。尝试 'build.plugins.plugin[com.mysema.querydsl:querydsl-maven-plugin].dependencies.dependency.version' for ch.qos.logback:logback-classic:jar 时,插件依赖项未解决. @ 第 95 行,第 18 列`
  • 所有使用的插件必须在 Maven 开始构建之前完全解析。所以你不能将项目依赖项用作插件依赖项,它们只是用途不同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-12
  • 1970-01-01
  • 2019-10-16
  • 1970-01-01
  • 1970-01-01
  • 2012-12-27
  • 2011-08-30
相关资源
最近更新 更多