温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

maven中怎么重构项目

发布时间:2021-08-05 16:43:03 来源:亿速云 阅读:409 作者:Leah 栏目:编程语言

这篇文章给大家介绍maven中怎么重构项目,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

user-system拆分成:

  • user-web

  • user-service

  • user-dao

  • user-common

我们对其拆分后很有可能存在多个子项目中同时依赖某个jar包,如果使用不当可能会导致每个模块使用的版本不一样,所以想想能不能有什么方式来解决这类问题呢?

答案:能。但是得先了解两个概念:聚合和继承。

聚合

所谓的聚合就是我们如果想一次性构建多个项目模块,那我们就需要把这些项目模块进行聚合。

配置模板

<modules>    <module>项目模块一</module>    <module>项目模块二</module>    <module>项目模块三</module>    <module>项目模块...</module></modules>

使用方式

比如我们对user-web、user-service、user-dao、user-common四个项目模块进行聚合。

<modules>    <module>user-web</module>    <module>user-service</module>    <module>user-dao</module>    <module>user-common</module></modules>

注意:其中module的路径为相对路径。

这样就解决了我们项目模块的聚合,我们再来看看maven是如何来解决由于重复依赖导致版本不一样的问题。

继承

继承为了消除重复,我们把很多相同的配置提取出来,例如:grouptId,version等 。

继承的配置

<parent>    <artifactId>maven-demo</artifactId>    <groupId>com.tian</groupId>    <version>1.0-SNAPSHOT</version></parent>

继承代码中定义属性

继承代码过程中,可以定义属性,例如:

<properties>   <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>   <junit.version>4.13.1</junit.version>   <maven.version>0.0.1-SNAPSHOT</maven.version></properties>

访问属性的方式为${junit.version},例如:

<?xml version="1.0"><project xmlns="http://maven.apache.org/POM/4.0.0"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <parent>        <artifactId>maven-demo</artifactId>        <groupId>com.tian</groupId>        <version>1.0-SNAPSHOT</version>    </parent>    <modelVersion>4.0.0</modelVersion>    <artifactId>user-web</artifactId>    <dependencies>        <dependency>            <groupId>junit</groupId>            <artifactId>junit</artifactId>            <!-- 使用了parent中 junit.version -->            <version>${junit.version}</version>        </dependency>    </dependencies></project>

这样我们就可以使用到上面定义的属性junit.version=4.13.1。

父模块用dependencyManagement进行管理

由于项目模块较多,所以我们又抽象了一层,抽出一个parent来管理子项目的公共的依赖。为了项目的正确运行,必须让所有的子项目使用依赖项的统一版本,必须确保应用的各个项目的依赖项和版本一致,才能保证测试的和发布的是相同的结果。

<dependencyManagement>    <dependencies>     <dependency>        <groupId>junit</groupId>        <artifactId>junit</artifactId>        <version>${junit.version}</version>        <scope>test</scope>      </dependency>     </dependencies></dependencyManagement>

这样的好处是子模块可以有选择性的继承,而不需要全部继承。

maven中怎么重构项目

这样做的好处:统一管理项目的版本号,确保应用的各个项目的依赖和版本一致,才能保证测试的和发布的是相同的成果,因此,在顶层pom中定义共同的依赖关系。同时可以避免在每个使用的子项目中都声明一个版本号,这样想升级或者切换到另一个版本时,只需要在父类容器里更新,不需要任何一个子项目的修改;如果某个子项目需要另外一个版本号时,只需要在dependencies中声明一个版本号即可。子类就会使用子类声明的版本号,不继承于父类版本号。

聚合和继承的关系

在前面我们构建多模块项目中,关系如下

maven中怎么重构项目

配置我们之前安装好的maven目录、maven下面的setting.xml以及本地仓库目录。然后Apply--->OK。

maven中怎么重构项目

这样我们就把Maven集成到我们的IDEA中来了。

编译运行项目

我们可以在父项目中对所有子项目进行编译、打包等。我们就来对所有子模块进行打包。

maven中怎么重构项目

也可单独对某个子项目进行打包等操作。比如我们对user-common进行clean。

maven中怎么重构项目

然后把src目录删掉,创建子项目:

选中user-parent项目,右键,选中New-->Module

maven中怎么重构项目

next。填写子项目名称,我们这里创建一个user-web的子项目:

maven中怎么重构项目

点击Finish:

maven中怎么重构项目

已经添加了modules,同时把我们的user-web添加进去了。

同样方法,我们就可以创建更多字项目了:

再看看user-parent中的pom.xml文件内容:

maven中怎么重构项目

关于maven中怎么重构项目就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI