【问题标题】:Maven project dependencyMaven项目依赖
【发布时间】:2018-10-20 15:48:21
【问题描述】:

目前我有 3 个 maven 项目:

     ProjectCommon
    _______|________ 
    |              | 
ProjectA        ProjectB

由此产生的 3 pom.xml:

#ProjectCommon/pom.xml

<groupId>my.package</groupId>
<version>1.0</version>

#ProjectB/pom.xml

<dependency>
   <groupId>my.package</groupId>
   <artifactId>ProjectCommon</artifactId>
   <version>1.0</version>
</dependency>

#ProjectB/pom.xml

<dependency>
   <groupId>my.package</groupId>
   <artifactId>ProjectCommon</artifactId>
   <version>1.0</version>
</dependency>

当我需要打包我的 2 个应用程序(ProjectAProjectB)并且总是需要运行以下命令时:

cd ProjectCommon && mvn install
cd ProjectA && mvn package
cd ProjectB && mvn package

还有其他方法可以配置我的项目(比如使用Maven Modules)来完成我现在拥有的工作,而不是总是需要在我的本地存储库上install我的ProjectCommon

【问题讨论】:

    标签: maven maven-dependency maven-module


    【解决方案1】:

    我建议创建这样的结构:

    +- root (pom.xml)
        +--- common (pom.xml)
        +--- projectA (pom.xml)
        +--- projectB (pom.xml)
    

    根目录包含两个模块条目,如下所示:

    <modules>
      <module>projectA</module>
      <module>projectB</module>
      <module>common</module>
    </modules>
    

    每个子模块都应该包含这样的父条目(公共模块的示例):

    <parent>
      <groupId>my.package</groupId>
      <artifactId>parent</artifactId>
      <version>1.0-SNAPSHOT</version>
    </parent>
    
    <artifactId>common</artifactId>
    

    此外,在 projectA/projectB 中,您可以简单地定义对 common 的依赖关系,现在您可以使用根目录中的单个命令构建所有模块,包括您的项目:

    mvn clean package
    

    或者如果您喜欢运行集成测试:

    mvn clean verify
    

    不需要install...

    值得一提的是,在此设置中,您必须为所有常见的、projectA、projectB 和 root 使用单个版本

    【讨论】:

    • you can build all modules - 但是如果我不想构建所有模块,只构建 common 和 ProjectA,因为 ProjectB 上的测试无法在我的系统上执行或需要数小时才能完成?
    • you have to use a single version for all 这对我来说是个问题,因为ProjectAProjectB 是不同的应用程序,当我发布新版本时,我不想同时发布两者。
    • 但是根据您的描述,您可以从两个项目中获得与公共资源的耦合。这意味着您必须单独处理公共资源并单独构建和发布它,并相应地更新项目中的发布版本。此外,如果 projectA/projectB 分开,您还必须单独运行/构建/发布它们。除此之外,我建议开始使用像 jenkins 这样的 CI 解决方案,这可以让事情变得更容易......
    猜你喜欢
    • 2014-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-22
    • 2013-11-25
    • 2011-04-15
    • 2013-06-22
    • 2011-01-15
    相关资源
    最近更新 更多