当前位置: 首页 > 知识库问答 >
问题:

Maven多模块项目

朱锦
2023-03-14

我曾广泛使用过Maven

目前有5个不同的maven项目,每个项目都有一个不同的pom.xml。到目前为止,它们之间存在依赖关系,如果需要,每一个都指向 中的另一个。

现在我们不喜欢的是

  1. 当我们发布子projectA时,我们需要手动修改所有将projectA作为依赖项的项目以使用新版本。Saw Maven有一个版本插件,不知道这会有什么帮助。
  2. 作为解决方案,我希望在POM之间有一个更干净的组织,并可能避免上述问题。

我想的是(可能不正确)

其中胖箭头表示父子关系,细箭头表示子模块。但这似乎不起作用,请参见下面的代码和错误

  <groupId>ChildProject2</groupId>
  <artifactId>ChildProject2</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <parent>
     <groupId>Parent</groupId>
     <artifactId>Parent</artifactId>
     <version>${parent.version}</version>
     <relativePath>../Parent/pom.xml</relativePath>
  </parent>
  <dependencies> ...   </dependencies>
  <groupId>Parent</groupId>
  <artifactId>Parent</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>

  <properties>
   <parent.version>0.0.1-SNAPSHOT</parent.version>
  </properties>

  <modules>
    <module>../ChildProject2</module>
    <module>../ChildProject1</module>
  </modules>

  <dependencies> ...  </dependencies>
  <groupId>GrandParent2</groupId>
  <artifactId>GrandParent2</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>

  <properties>
   <grandparent2.version>0.0.1-SNAPSHOT</grandparent2.version>
  </properties>

  <modules>
    <module>../Parent</module>
  </modules>

  <dependencies>...  </dependencies>

parentmain.java

public class ParentMain {

    public static void main(String[] args) {
        DocumentFactory df = new DocumentFactory();
        ChildProject1Main cp1 = new ChildProject1Main();
        ChildProject2Main cp2 = new ChildProject2Main();
    }

}

ParentMain-错误

    • ChildProject1Main无法解析为类型
      null

共有1个答案

壤驷俊逸
2023-03-14

当我看到这个图表时,我想到的第一个问题是,“为什么业务逻辑会对子模块有任何依赖关系?”我突然想到了两个想法,我会把它们每一个都过一遍,以及你不应该做什么来重复这些。

>

  • 紧耦合代码。这表现在代码重复或大类/方法气味上。

    您希望您的代码是模块化的,这样一个项目只依赖于它所需要的,以便无错误地编译和运行。

    至于版本控制,有一些CI工具可以帮助您解决这个问题,比如Jenkins和TeamCity。要冲是要以一种独立于人为干预/错误的方式来设置它。

  •  类似资料:
    • 我有一个多模块maven应用程序,我们需要通过Jenkins构建。项目结构如下: 现在,mvn清洁安装-fa.xml工作正常。为此,我创建了一个詹金斯的工作。现在,和a.xml一样,我有另一个项目b.xml.b.xml有和a.xml相同的代码,除了不同的Ids。所以,我又为詹金斯创造了一份工作b.xml.两份工作都很好。但是,现在我想根据我们在Git中提交的项目,从单个Jenkins工作中构建这两

    • 问题内容: 这是一个基本问题,我只是不太熟悉Maven多模块结构。说,我有一个Web应用程序。我想将一些模块连接到它(某些服务)。我是否需要仅将其中一个模块(依赖于其他模块)制作为一个Web应用程序,然后运行它?一开始我以为我可以运行整个项目,但是这个选项在我的IDE中是无效的(我现在正在使用NetBeans),这使我认为我应该运行一个类似于主模块的东西(在这种情况下为Web应用程序) )。是这样

    • 父项目为demo-mybatis子模块为mybatis-dao、demo-service。demo-mybatis pom.xml如下: 4.0.0 pom mybatis-DAO Demo-service Demo-mybatis-app org.springframework.Boot spring-boot-starter-parent 2.3.2.release com.example D

    • 我正在尝试创建一个多模块的项目,包含两个模块,核心和Web。它们都是我在Spring Initialzer上生成的Spring Boot项目。我设置了Maven POM文件,但在部署它时遇到了问题。然而,我很困惑配置是如何工作的。 核心模块将包含域对象/实体、Spring数据JPA存储库、服务,并将打包为一个JAR。Web模块将具有Spring Security、控制器和视图。它将被包装成一场战争

    • 嗨我在网上搜了一遍,看了一堆文章,所以问题和文档都找不到解决办法,这里是我的问题。 我有一个多模块maven项目,其中包含三个模块a、B和C,a和B独立,C依赖于a和B,当然我有一个父项目。我还设置了一个jenkins服务器来构建这些项目,以及一个nexus存储库。 如有任何帮助,不胜感激。谢谢!

    • 我有以下Maven项目结构: i、 e.Project1、Project2和Project3在目录结构上是对等的,它们都是Spring Boot应用程序(JAR)。我想将Project2和Project3视为Project1的子项,而不改变目录结构。当我在父项目上执行相同的maven命令时,我需要在子项目上过渡地执行所有maven命令。而且最重要的是,我应该能够将它们打包到一个JAR文件中。我在谷