3

我有几个独立的项目(它们没有相同的父项目),但它们使用相同的库集。例如

  • 项目A
  • 项目 B
  • 项目 C

所有这些项目都使用 Spring、Postgres、Hibrenate 和 tomcat。我想要做的是按照以下几行介绍一个命名的依赖集合的概念:

  • TSHP 1.0 - 可能由 tomcat 6.0.35、Spring 3.0.7、Hibernate 3.6.8 ... 等组成
  • TSHP 2.0 - 可能包含 tomcat 7.0.32、Spring 3.1.2、Hibernate 4.1.7 .. 等

我希望能够说项目 A 依赖于 TSHP 1.0,项目 B 依赖于 TSHP 2.0 ......等等。我看到的这种设置的价值是

  • 很容易对一组与公司一起使用的通用库进行标准化,因此跨项目审计很容易,如果你知道它是,你不必深入研究项目的 pom 来查看其中的内容使用一组命名的依赖项
  • 使用标准类路径启动一个新项目可能非常容易,因为它应该可以只包含对命名组的单个依赖项并获得该类型应用程序所需的一切,只需要一个人弄清楚并验证组合命名类路径中的 jar 确实可以很好地相互配合。

这种类型的设置可以用maven3完成吗?如果有怎么办?

更新:我在父 pom 设置中看到的问题是 POM 只能有一个父级,但我可能有几个标准的命名类路径,例如:

  • WEB_SECURITY - 可能是用于防止常见 Web 安全问题的 jar 集合,因此 Web 应用程序可能包含 TSHP + WEB_SECURITY,而批处理应用程序可能仅包含 TSHP。组合比继承更好,而且更灵活。
4

2 回答 2

2

为“平台”创建一个新项目,即要一起使用的一组依赖项。其包装类型应为:pom.

<project>
    <groupId>…&lt;/groupId>
    <artifactId>tshp-platform</artifactId>
    <version>1.0</version>
    <packaging>pom</packaging>
    <dependencies>
      <!-- Dependencies for TSHP 1.0 -->
    </dependencies>
…

pom 的 1.0 版本。然后更新 TSHP 2.0 的版本和依赖项。然后释放它。

现在,您的项目可以简单地声明对 pom 项目的依赖,并将传递平台。

但是,请注意,明确声明每个单独项目直接依赖的工件通常被认为是一种好的做法。但是,这不是必需的。

于 2012-10-22T20:48:59.900 回答
1

我认为您在谈论的是“公司POM”的概念。Sonatype 给出
的定义是:

企业舞会

Corporate Pom 是位于公司继承结构顶部的父 Pom。这是集中某些配置的推荐最佳实践,例如 Enforcer 规则配置、默认插件版本等。这也可以称为“组织 Pom”。“Super Pom”这个词经常被误用在企业 Pom 上。

也可以看看 :

家长绒球

父 pom 只是一个 pom,其他 pom 通过一个部分从它继承。从父代继承的 Pom 有时被称为“子代”或“子代”。</p>

于 2012-10-22T20:12:16.973 回答