【问题标题】:Possible to make Maven POM Element Not Inheritable?可能使 Maven POM 元素不可继承?
【发布时间】:2013-02-20 09:06:54
【问题描述】:

我有一个父 pom,它定义了许多我希望我的子 pom 继承的插件和依赖项。但是,我们使用 scm 元素作为发布版本的一部分,我想将父级的 scm 添加到 pom 中,但它不会被任何子级 pom 继承(以防子级忘记定义它并使用父级的)。有没有办法将元素设置为不可继承?

【问题讨论】:

标签: maven pom.xml parent-pom


【解决方案1】:

我不这么认为。

但是你能不能让它使用一个在父 pom 和从属 pom 中以不同值结束的属性,这样如果孩子没有自己的<scm> 标签,它会在孩子中失败?使用<profile> 在父级和子级中定义不同的属性。

有时有效。

它有时会起作用的原因是配置文件不会被子代继承,但如果父代中的配置文件设置了属性,则该属性会被子代继承。

因此,有时您可以使用该“功能”来完成您正在做的事情。如果您在父项中激活配置文件并且<scm> 部分在配置文件中,则子项不会继承它。

另一种可能的解决方案是让您使用版本控制系统上的权限。在某些情况下,允许签入子项目的用户凭据可能不会被授予签入父项目的权限。如果子项目没有声明自己的<scm>,那么他们将无权愚弄父项目<scm> 部分中的回购部分。

【讨论】:

  • 构建由我们的 CI 系统 (Hudson) 完成,因此由同一用户执行。
  • @LarryShatzer 提到了执行器插件。它有一个要求属性的规则。如果你在使用某个属性的父级中放置<SCM> 标签,也许你可以要求所有的子级都自己定义该属性。
猜你喜欢
  • 2020-06-27
  • 2020-12-28
  • 2012-03-17
  • 2011-07-26
  • 2016-04-11
  • 2012-12-22
  • 1970-01-01
  • 2011-12-23
  • 2019-06-07
相关资源
最近更新 更多