maven怎么做版本控制器(建议收藏)

maven怎么做版本控制器(建议收藏)

一、dependency相关配置

1.1、scope

test:只在测试时使用,打包时不用。

import:单继承。只能用在dependencyManagement里面,且仅用于type=pomdependency

1.2、type

dependency为什么会有type为pom,默认的值是什么?
dependency中type默认为jar即引入一个特定的jar包。那么为什么还会有type为pom呢?当我们需要引入很多jar包的时候会导致pom.xml过大,我们可以想到的一种解决方案是定义一个父项目,但是父项目只有一个,也有可能导致父项目的pom.xml文件过大。这个时候我们引进来一个type为pom,意味着我们可以将所有的jar包打包成一个pom,然后我们依赖了pom,即可以下载下来所有依赖的jar包。

二、dependencyManagement

间接依赖,主要作用是用来管理依赖。可以被继承,如果在这个元素中引入的依赖不会被加载进来,只有其他工程引入这个依赖之后才会被引入。一般用于父pom.xml中,而子工程dependency元素在依赖。

三、创建版本控制器

实现效果,我要向springboot版本控制器那样,只需要依赖我的这个版本控制器,就不用再依赖springbootspringcloud以及springcloudalibaba这些版本控制器了。在父工程引入我的这个依赖,在工程依赖部分模块实现相应的功能。就很好的避免重复的写同样的功能,只需要一个依赖就实现相同的功能了。

这样做的好处是。

1、如果自己很多项目需要实现相同的功能,那么我们只需要写一套代码,install到本地仓库或者私服里面,其他项目一个依赖就可以。

2、不用项目都需要去引用一大堆依赖,某个依赖更新时,设计的再好,只好每个项目需要在父工程中更改一次。就意味着项目更新比较麻烦,如果实现自定义版本控制器后,就可以向springboot版本控制器那样很好的管理版本,今后代码只维护一套,所有项目就得到解决。

这也是我策划已久的项目,也是我设计失败了三四个项目后取得的成就。

写法和普通多模块项目一样的,其他项目引入时采用springboot版本控制器的方式引入就可以了。

3.1、父pom.xml设计

在父pom.xml中,必须将packaging设置为pom,默认为jar。子工程需要设置为jar,但是默认就是jar,我们就可以忽略。

在这里插入图片描述

dependencies标签说明

dependencies标签中引入的依赖,每个子工程中也就自动继承了这里的依赖。所以只要在这个标签中引入的依赖,maven会将这个标签中的依赖加载到项目中,每个子模块不用再依赖就直接使用。

在这里插入图片描述

dependencyManagement标签说明

这个标签一般使用在父pom.xml中,在这个标签中引入的依赖,不会加载进来,在这里将依赖写好,版本号定义好。子模块引用这里面的依赖时,就避免写版本号了,只要子工程依赖,这里的依赖才会加载到项目中。所以这个标签一般用于版本控制,为了好维护版本号。

在这里插入图片描述

3.2、插件

安装一下两个插件,第一个是指定JDK版本。第二个是打包插件。

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.7.0</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
        <!--springboot 打包插件-->
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

如果某个子工程直接打成jar直接运行的,那么会遇见一下错误。

java -jar XXX.jar中没有主清单属性,建议收藏。

参考博客:https://blog.csdn.net/qq_41853447/article/details/107288874

需要在需要运行的这个子工程中在添加以下插件,在插件中指定main方法的路径。

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>2.2.2.RELEASE</version>
            <configuration>
                <!-- main方法的地址 只需要修改这个地址-->
                <mainClass>com.security.user.AuthServerApplication</mainClass>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

3.2、子pom.xml设计

子工程里面,需要使用那些jar就直接依赖即可。

在这里插入图片描述

在这里插入图片描述

但是父pom.xml里面dependencies标签引入的依赖,所以子工程都可以不用引入了,可以直接使用。所以我习惯性说,dependencies里面是的直接依赖,dependencyManagement里面的是间接依赖。直接依赖的,所有子工程不用再依赖直接使用,间接依赖的,子工程需要重新引入才可以使用。

四、两个项目之间依赖关系讲解

依赖的使用和一个项目中不同模块依赖是一样的,多模块项目之间依赖关系,常常有之。

当我们在父项目中的父pom.xml直接依赖进来的jar,我们将父项目打成jar让子项目中引用。那么子项目中就不用再引入父项目中直接依赖进来的jar了。

例如:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

五、子项目依赖父项目

依赖方式就像依赖springboot版本控制器那样依赖就行。

在这里插入图片描述

六、讲解子项目中为什么依赖这么少

6.1、子项目中父pom.xml依赖

在这里插入图片描述

6.2、子木块依赖

在这里插入图片描述

6.3、子项目为什么不需要其他的依赖了

在这里插入图片描述

七、将工程打包到本地仓库

参考博客:https://blog.csdn.net/qq_41853447/article/details/107291968

install项目的时候,注意install父项目,因为你install某个子项目时,只会将那个子项目install到本地仓库,其他你是不能install进去的。就意味着引入父项目的那个依赖是不能引入的,因为本地仓库没有。

在这里插入图片描述

查看本地仓库

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值