栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

使用idea创建多模块Maven项目(模块间的继承与依赖)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用idea创建多模块Maven项目(模块间的继承与依赖)

今天记录一下maven的基本使用-创建多模块项目, 各位看到此博客的小伙伴,如有不对的地方请及时通过私信我或者评论此博客的方式指出,以免误人子弟。多谢!

直接上步骤:

创建继承关系模块(两个模块具有父子关系) 创建父子模块 第一步:创建父模块

依次点击 File -> New -> Project ->Maven ->Next

按自己需求填写如下信息,最后点击Finish完成父模块的创建。

创建后目录结构如下:

第二步:修改父模块pom

在修改pom文件之前,先删掉父模块中的src目录。

然后在修改pom文件,如果只是简单能用,其实只要修改如下两个配置即可:

1、添加标签并将其改为pom。

2、添加标签配置对所有模块依赖的管理。

修改后完整pom如下:



    4.0.0

    com.yjh.learn
    pro-learn
    1.0-SNAPSHOT

    
    pom

    
    
        redis-learn
        pro-common
    

    
        8
        8
    

    
    
        
            
            
                org.springframework.boot
                spring-boot-starter-web
                2.3.3.RELEASE
            
            
                org.springframework.boot
                spring-boot-starter-test
                2.3.3.RELEASE
                compile
            
            
            
                org.springframework.boot
                spring-boot-starter-data-redis
                2.3.3.RELEASE
            
        
    


我们在父模块中引入了三个依赖,接下来我们创建一个学习redis的子模块。

创建子模块 第一步:创建子模块

选中父工程 pro-learn -> New -> Module -> Spring Initializr -> Module SDK(选择自己的jdk版本) -> Next

按自己需求填写如下信息,点击Next进入下一步。

这里可以什么都不选,点击Next进入下一步,然后,按自己需求填写信息,最后点击Finish完成子模块的创建。

创建子模块后的目录结构如下:

这里我把用不到的文件和目录(.mvn、HELP.md、mvnw、mvnw.cmd)删掉,至于这几个文件的作用是什么,自行百度,删除后如下,看着清爽多了:

第二步:父模块中添加modules管理子模块

在父pom中添加如下配置:


    redis-learn

第三步:配置子模块pom

将redis-learn模块pom文件中parent中的坐标(groupId、artifactId、version)改为父模块的坐标,及添加依赖,具体看以下pom文件中的注释:



    4.0.0
    
    
        
        com.yjh.learn
        pro-learn
        1.0-SNAPSHOT
    

    
    
    com.yjh.learn
    redis-learn
    0.0.1-SNAPSHOT

    redis-learn
    Demo project for Spring Boot
    
        1.8
    

    
    
    
    
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-test
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    


此时我们查看下子模块maven的依赖包,发现版本同父模块,如下:

当然你也可以像创建父模块一样来创建子模块,这样就不用自己在父模块的modules中自己添加配置,会自动添加,但是响应的src目录下也没有SpringBoot的启动类及resources文件夹,根据自己习惯来就行。

创建依赖关系模块(一个模块引用另一个模块)

在我们开发中,是不是经常把一些公用的方法,比如你的util工具类,常量类等放到一个单独的包中,比如放到common包中,如果分多模块,就可以把这些公共方法单独放到一个模块中。

创建子模块 第一步:创建子模块

像上面创建redis-learn模块一样,创建一个子模块pro-common用来存放公共类。

如下,我们在pro-common模块中添加了一个TaskIdUtil的工具来,这个类是我项目中用来按客户id按天生成自增序列号的,格式为 yyMMdd + 4位账号序列号 + 8位自增,当达到最大值999999999时从00000001开始自增,TaskIdUtil类代码如下:

package com.yjh.learn.procommon.utils;


import com.yjh.learn.procommon.cache.CacheCurrentDate;

import java.text.NumberFormat;
import java.util.concurrent.atomic.AtomicInteger;


public class TaskIdUtil {

    private static final Integer MAX_VALUE = 99999999;

    private static AtomicInteger num = new AtomicInteger(0);

    
    public static String getTaskId(String accountId) {
        StringBuffer buffer = new StringBuffer();
        String nowDateStr = CacheCurrentDate.INS.nowDateStr();
        String accSeqnceNo = accFormat(accountId);
        String sequenceNo = getSequenceNo();
        return buffer.append(nowDateStr).append(accSeqnceNo).append(sequenceNo).toString();
    }

    private static String getSequenceNo() {
        int initNum = num.get();
        if (initNum == MAX_VALUE) {
            num = new AtomicInteger(1);
            return numFormat(1);
        }
        int result = num.incrementAndGet();
        return numFormat(result);
    }

    private static String numFormat(int number) {
        NumberFormat format = NumberFormat.getInstance();
        format.setGroupingUsed(false);
        format.setMaximumIntegerDigits(8);
        format.setMinimumIntegerDigits(8);
        String result = format.format(number);
        return result;
    }

    private static String accFormat(String accountId) {
        NumberFormat format = NumberFormat.getInstance();
        format.setGroupingUsed(false);
        format.setMaximumIntegerDigits(4);
        format.setMinimumIntegerDigits(4);
        String result = format.format(Integer.parseInt(accountId));
        return result;
    }

}
第二步:在redis-learn引用pro-common

修改redis-learn模块中的pom文件,通过pro-common的坐标来引用pro-common模块,在redis-learn的pom中添加如下配置:


    com.yjh.learn
    pro-common
    0.0.1-SNAPSHOT

这是我们刷新maven依赖可以看到pro-common已经引入我们的redis-learn模块中了,如下:

第三步:测试依赖是否可用

在redis-learn模块中的测试类中添加如下测试方法:

@Test
void contextLoads() {
    for (int i = 0; i < 20; i++) {
        System.out.println(TaskIdUtil.getTaskId("1"));
    }
}

发现可以正确引用pro-common模块的工具来并执行成功,执行结果如下:

至此,一个基本的maven管理的多模块项目就搭建完毕了。

如果我的博客对你有帮助,欢迎进行评论✏️✏️、点赞、收藏⭐️⭐️,满足一下我的虚荣心

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1035093.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号