HarmonyOS 鸿蒙Next 分模块构建Maven工程

HarmonyOS 鸿蒙Next 分模块构建Maven工程

分模块构建Maven工程Demo

1. 分模块构建Maven分析

在企业项目开发过程中,由于项目规模庞大,业务复杂,参与的人员比较多,一般会通过合理的模块拆分将一个大型的项目拆分为N多个小模块,分别进行开发。而且拆分出的模块可以非常容易地被其他模块复用。

常见的拆分方式有两种

  • 第一种: 按照业务模块进行拆分,每个模块拆分成一个maven工程,例如将一个项目分为用户模块、订单模块、购物车模块等,每个模块对应就是一个maven工程。
  • 第二种: 按照层进行拆分,譬如持久层、业务层、表现层等,每个层对应就是一个maven工程。
    不管是上面哪种拆分方式,通常都会提供一个父工程,将一些公共的代码和配置提取到父工程中进行统一管理和配置。

1.1 Maven工程的继承

在Java语言中,类之间是可以继承的,通过继承,子类就可以引用父类中非private的属性和方法。
同样,在maven工程之间也可以继承,子工程继承父工程后,就可以使用在父工程中引入的依赖。 继承的目的是为了消除重复代码。

被继承的Maven项目中的pom.xml文件中的定义是:

<groupId>com.hj</groupId>
<artifactId>parent</artifactId>
<version>1.0-SNAPSHOT</version>
<!--父工程的打包方式必须为pom-->
<packaging>pom</packaging>

被继承的maven工程通常称为父工程,父工程的打包方式必须为pom,

所以我们区分某个maven工程是否为父工程就看这个工程的打包方式是否为pom。

继承的Maven项目中的pom.xml文件中的定义是否为pom。

<parent>
    <artifactId>parent</artifactId>
    <groupId>com.hj</groupId>
    <version>1.0-SNAPSHOT</version>
    <relativePath>../parent/pom.xml</relativePath>
</parent>

1.2 maven工程的聚合

在maven工程的pom.xml文件中可以使用<modules>标签将其他maven工程聚合到一起,聚合的目的是为了进行统一操作。例如拆分后的maven工程有多个,如果要进行打包,就需要针对每个工程分别执行打包命令, 操作起来非常繁琐。这时就可以使用<modules>标签将这些工程统一聚合到maven工程中,需要打包的时候,只需要在此工程中执行一次打包命令,其下被聚合的工程就都会被打包了。

<modules>标签中添加被聚合的Maven工程

1.3分模块构建maven工程具体实现

此案例分模块构建 整合一下SSM测试

1.3.1首先创建父工程

创建完毕会自动打开到pom.xml文件

  1. 首先声明<packaging>pom</packaging> 父工程的打包方式必须为pom。

  2. 随后加入SSM框架所需坐标的jar包版本锁定:

    父工程中的pom文件中呢只用于jar包版本的锁定,
    子工程用什么直接写坐标不用写version

<!--指定版本-->
<properties>
    <spring.version>5.0.5.RELEASE</spring.version>
    <springmvc.version>5.0.5.RELEASE</springmvc.version>
    <mybatis.version>3.4.5</mybatis.version>
</properties>
<!--锁定jar版本-->
<dependencyManagement>
    <dependencies>
        <!-- Mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>${mybatis.version}</version>
        </dependency>
        <!-- springMVC -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${springmvc.version}</version>
        </dependency>
        <!-- spring -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${spring.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>

1.3.2. 构建子工程 maven_pojo

父工程上右键new --> Module --> Maven

构建完毕后创建实体类对象

构建完毕 子工程pom文件中显示:

<!--表示当前maven工程继承了 maven_parent父工程-->
<parent>
    <artifactId>maven_parent</artifactId>
    <groupId>com.hj</groupId>
    <version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<groupId>com.hj</groupId>
<artifactId>maven_pojo</artifactId>

此时父工程maven_parent的pom文件中就会自动的加入: 用于用于聚合其他其他maven工程的<modules>标签

1.3.3. 构建子工程 maven_dao

构建dao层

在maven_dao模块的pom文件中 添加依赖

<dependencies>
    <!--在dao层的pom文件中加入pojo的坐标依赖-->
    <dependency>
        <groupId>com.hj</groupId>
        <artifactId>maven_pojo</artifactId>
        <version>1.0-SNAPSHOT</version>
        <scope>compile</scope>
    </dependency>
    <!-- Mybatis和mybatis与spring的整合 -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
    </dependency>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId>
        <version>1.3.1</version>
    </dependency>
    <!-- MySql驱动 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.32</version>
    </dependency>
    <!-- druid数据库连接池 -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.0.9</version>
    </dependency>
    <!-- spring相关 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aop</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-expression</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aspects</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-support</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
    </dependency>
    <!-- junit测试 -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
    </dependency>
</dependencies>

1.3.4. 构建子工程 maven_service

在maven_service模块的pom文件中 添加依赖

<!--这里用到了maven的依赖传递的特点,
service直接依赖dao的坐标就无须再定义坐标-->
<dependencies>
    <dependency>
        <groupId>com.hj</groupId>
        <artifactId>maven_dao</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    <!--添加springMvc用到的坐标-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
    </dependency>
</dependencies>

1.3.5. 构建子工程 maven_web

最后构建web模块

构建完毕后创建相关类,添加配置文件

在maven_web的pom文件中加入依赖

<!--这里用到了maven的依赖传递的特点
web直接依赖service的坐标就无须再定义坐标-->
<dependency>
    <groupId>com.hj</groupId>
    <artifactId>maven_service</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

1.3.6 项目整体结构

项目整体结构如右图所示:

  1. maven_parent为父工程,其余工程为子工程,都继承了 父工程maven_parent
  2. maven_parent工程将其子工程都进行了聚合
  3. 子工程之间存在依赖关系,比如maven_dao依赖 maven_pojo、maven_service依赖maven_dao、 maven_web依赖maven_service

1.3.7 测试运行

把maven_web模块添加到tomcat中

分模块构建Maven工程,测试运行成功。

作者:沉默着欢喜


更多关于HarmonyOS 鸿蒙Next 分模块构建Maven工程的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于HarmonyOS 鸿蒙Next 分模块构建Maven工程的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对帖子标题“HarmonyOS 鸿蒙Next 分模块构建Maven工程”的问题,以下是专业且简洁的回答:

HarmonyOS 鸿蒙Next在支持分模块构建Maven工程时,主要依赖于其内置的构建工具和项目管理机制。为了构建Maven工程,你需要确保以下几点:

  1. 环境配置:确保你的开发环境已经正确安装了HarmonyOS SDK和相关工具链,以及Maven构建工具。

  2. 项目结构:按照Maven的标准目录结构组织你的项目,包括src/main/javasrc/test/java等目录,并创建相应的pom.xml文件来定义项目的依赖、插件等。

  3. 模块划分:在pom.xml中,你可以通过定义<modules>标签来划分不同的子模块。每个子模块也应有自己的pom.xml文件,用于描述该模块的依赖和构建配置。

  4. 依赖管理:在pom.xml文件中,使用<dependency>标签来管理项目所需的第三方库和内部模块依赖。

  5. 构建命令:在命令行中,使用mvn clean install等Maven命令来构建和打包你的项目。

请注意,HarmonyOS鸿蒙Next的具体构建配置可能因版本和工具链的不同而有所差异。如果遵循上述步骤后仍遇到问题,请查阅HarmonyOS官方文档或相关社区资源以获取更多信息。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部