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

Java学习(Maven开源的项目管理工具)

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

Java学习(Maven开源的项目管理工具)

2022/3/26

一、Maven一款开源的项目管理工具
Maven中每一个项目都相当于是一个对象,对象和对象之间是有关系的。关系包含了:依赖,继承,聚合,实现Maven项目可以更加方便的实现导jar包,拆分项目等效果。

二、Maven仓库
基于简单文件系统存储的,集中化关闭Java API资源(构件)的一个服务。
仓库中的任何一个构件都有其唯一的坐标,根据这个坐标可以定义其在仓库中唯一存储路径。得益于Maven的坐标机制,任何Maven项目使用任何一个构件的方式都是完全相同的。
Maven可以再某个位置统一存储Maven项目共享的构件,这个统一的位置就是仓库,项目构件完毕后生成的构件也可以安装或者部署到仓库中,供其他项目使用。
对于Maven来说,仓库分为两类:本地仓库和远程仓库(从远程仓库中拿到放到本地仓库中便于使用)
* 远程仓库:不在本机的就是远程仓库:分为中央仓库和本地私服仓库
远程仓库是指通过各种协议,如file://和http://访问的其他类型的仓库。
其他的也有可能是自己公司的私服,自己公司在局域网搭建的maven仓库,用来在开发团队间共享私有构件和管理发布的。
默认的远程仓库使用的Apache提供的中央仓库:
https://mvnrepository.com/
* 本地仓库:指本机的一份拷贝,用来缓存远程下载,包含尚未发布的临时构件。
* 镜像仓库:仓库A可以提供仓库B的所有内容,A就是B的镜像仓库
        在国内连接中央仓库下载依赖,有时会由于一些特殊原因下载速度非常慢。所以我们可以使用阿里云提供的镜像仓库来替换中央仓库。
* 仓库优先级别:
        最先是本地仓库--> 到配置文件中指定的仓库中--> 有镜像仓库找镜像仓库没有就找中央仓库

三、Maven工程类型
1.POM工程:逻辑工程,用在父级工程后聚合工程中。用来做jar包的版本控制。
2.JAR工程:会打包成jar,用做jar包使用,常见的本地工程-->Java Project
3.WAR工程:将会打包成war,发布在服务器上的工程。
* 创建Maven工程
        GroupID:类似包名
        Atifactld:一般使用项目名字
        Version:版本
* Maven目录结构:
        *src/main/java:这个目录下储存java源代码
        *src/main/resources:储存主要的资源文件。比如xml配置文件和properties文件
        *src/test/java:储存测试用的类,比如JUNIT的测试一般就放在这个目录下面
因为测试类本身实际是不属于项目的,所以放在任何一个包下都显得很尴尬,所以maver专门创建了一个测试包用于存放测试的类
        *src/test:这个下面可以自己创建你,储存测试环境用的资源文件
        *src:包含了项目所有的源代码和资源文件,以及其他项目相关的文件。
        *target:编译后内容放置的文件夹(这个刚创建不显示,需要点击右边的maven/install)

四、maven工具基于POM(项目对象模型)模式实现的
在Maven中每一个项目都相当于是一个对象,他们之间的关系包含了依赖,继承,聚合。

1.依赖关系:
A依赖于B,B注入A(导jar包)
如何注入依赖,pom.xml文件,根元素project下的dependencies标签下可以包含多个dependence元素,声明多个依赖。可以依赖自己项目打包的jar包,也可以依赖中央仓库的,只需要导入jar包坐标即可。
https://mvnrepository.com/artifact/org.mybatis/mybatis  (这里可以找到)



    4.0.0

    ln.java
    MavenDemo01
    1.0-SNAPSHOT
    
        
            org.mybatis
            mybatis
            3.5.6
        
    

注意:一开始导入中央仓库,却报错了,原因是我一开始就install打包了,所以导入的时候出错,解决办法是clean一下就好了。
依赖的好处:省去了程序员手动添加jar包的操作,省事!并且可以帮我们解决jar包冲突问题。

 依赖的传递性:
如果项目1依赖mybatis工程,项目2依赖项目1,那么项目2也依赖mybatis工程
做法:
1.先将项目1打包,要先清除一下面前的jar,clean一下,再install打包。
2.让项目2 依赖项目1

 
        
            ln.java
            MavenDemo01
            1.0-SNAPSHOT
        
    

依赖的两个原则:
1.最短路径优先原则:项目依赖关系树种路径最短的版本会先被使用。
2.最先声明原则:若两个路径一样长,那么则使用在POM.xml中先声明的那个。

排除依赖:若有两个依赖包,想排除一个。则可以使用exclusion标签


        
            org.mybatis
            mybatis
            3.5.6
            
                ln.java
                MavenDemo01
            
        

依赖范围:
1.compile:编译和运行时都生效。(默认)
2.provided:编译和测试的时候。
3.runtime:运行时。
4.system:和provided类似,不过需要指定一个本地系统路径的JAR,通过systemath元素显式地指定依赖文件的路径。
5.test:编译测试代码和运行测试代码的时候。
6.import:只适用于pom文件中的部分
        * 这里表示父工程有这个以后,子工程可以决定父工程用哪个版本的jar
定义一个父工程/打包(继承)



    4.0.0

    ln.java
    MavenDemo01
    1.0-SNAPSHOT

    
        3.5.6
    
    
        
            
                org.mybatis
                mybatis
                ${banben}
                import
            
        
    

子工程



    4.0.0

    ln.java
    MavenDemo02
    1.0-SNAPSHOT

    //父工程
    
        ln.java
        MavenDemo01
        1.0-SNAPSHOT
        ../MavenDemo01/pom.xml
    
    
        
            org.mybatis
            mybatis
            3.5.4
        
    

2.聚合关系:
当我们开发的工程用有2个以上模块的时候,每个模块都是一个独立的功能集合。这时候我们需要一个聚合工程。
在创建聚合工程的时候,总的工程必须是一个POM工程。
        * pom
聚合项目必须是一个pom类型的项目,各子模块可以是任意类型的模块。
前提:继承
聚合包含子继承的特性。
聚合时多个项目的本质还是一个项目,这些项目被一个大的父项目包含。且这时父项目类型为pom类型。同时在父项目的pom.xml中出现表示包含的所有子模块。

五、编译器插件
1.settings.xml是设置全局的
2.配置编译器插件:pom.xml中可以配置(局部的jdk使用)
3.一般打包只会打包resources包下的配置文件
4.资源拷贝插件:pom.xml中可以配置(配置的路径下的配置文件在打包时也会被打包)
5.Tomcat插件:直接在maven项目中配置即可使用tomcat
Maven -Maven配置tomcat插件 两种 - lilixia - 博客园 (cnblogs.com)

六、Maven常见命令
1.install:mvn install
本地安装,包含编译,打包,安装到本地仓库
编译 -javac
打包 -jar
2.clean:清除已编译的信息,删除工程中的target目录
3.compile:只编译。
4.package:打包,包含编译和打包。
它和Install的区别是它没有把打好的jar包部署到本地仓库和远程仓库。
install把打好的包部署到本地仓库去了,但没有部署远程仓库。

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

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

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