Maven 浅析

下载Maven

  1. 打开Maven官网下载页面:http://maven.apache.org/download.cgi
    下载:apache-maven-3.5.3-bin.tar.gz

  2. 解压下载的安装包到某一目录,比如:/Users/xxx/Documents/maven

配置环境变量

打开terminel输入以下命令:

`vim ~/.bash_profile` 打开.bash\_profile文件,在次文件中添加设置环境变量的命令

`export M2_HOME=/Users/xxx/Documents/maven/apache-maven-3.5.3`

`export PATH=$PATH:$M2_HOME/bin`

添加之后保存并推出,执行以下命令使配置生效:

`source ~/.bash_profile`

查看配置是否生效

1、输入:mvn -v命令,返回结果如下:


返回结果.png

则配置成功。

Maven 的 Snapshot 版本与 Release 版本

1、Snapshot 版本代表不稳定、尚处于开发中的版本。
2、Release 版本则代表稳定的版本。
3、什么情况下该用 SNAPSHOT?
协同开发时,如果 A 依赖构件 B,由于 B 会更新,B 应该使用 SNAPSHOT 来标识自己。这种做法的必要性可以反证如下
a. 如果 B 不用 SNAPSHOT,而是每次更新后都使用一个稳定的版本,那版本号就会升得太快,每天一升甚至每个小时一升,这就是对版本号的滥用。
b.如果 B 不用 SNAPSHOT, 但一直使用一个单一的 Release 版本号,那当 B 更新后,A 可能并不会接受到更新。因为 A 所使用的 repository 一般不会频繁更新 release 版本的缓存(即本地 repository),所以B以不换版本号的方式更新后,A在拿B时发现本地已有这个版本,就不会去远程Repository下载最新的 B
4、 不用 Release 版本,在所有地方都用 SNAPSHOT 版本行不行?
不行。正式环境中不得使用 snapshot 版本的库。 比如说,今天你依赖某个 snapshot 版本的第三方库成功构建了自己的应用,明天再构建时可能就会失败,因为今晚第三方可能已经更新了它的 snapshot 库。你再次构建时,Maven 会去远程 repository 下载 snapshot 的最新版本,你构建时用的库就是新的 jar 文件了,这时正确性就很难保证了。

镜像

如果仓库X可以提供仓库Y存储的所有内容,那么就可以认为X是Y的一个镜像,也就是说任何一个可以从仓库Y获取的依赖,都能够从它的景象中获取。用过Maven的都知道,国外的中央仓库用起来太慢了,所以我在这里推荐大家使用国内阿里的镜像,在本地 maven 的 setting配置文件中加上阿里云镜像,如下所示:


  
    
        alimaven
        aliyun maven
        
            http://maven.aliyun.com/nexus/content/groups/public/
        
        central
    
  

本地仓库、远程仓库、中央仓库介绍、区别及关系

  • 本地仓库:远程仓库的一个缓冲和子集,当你构建Maven项目的时候,首先会从本地仓库查找资源,如果没有,那么Maven会从远程仓库下载到你本地仓库。这样在你下次使用的时候就不需要从远程下载了。如果你所需要的jar包版本在本地仓库没有,而且也不存在于远程仓库,Maven在构建的时候会报错,这种情况可能发生在有些jar包的新版本没有在Maven仓库中及时更新。

Maven缺省的本地仓库地址为${user.home}/.m2/repository 。
也就是说,一个用户会对应的拥有一个本地仓库。当然你可以通过修改${user.home}/.m2/settings.xml 配置这个地址:

      
       E:/repository/maven/repos  
       

如果你想让所有的用户使用统一的配置那么你可以修改Maven主目录下的setting.xml:
${M2_HOME}/conf/setting.xml

  • 远程仓库:除本地仓库以外的仓库都叫做远程仓库。本地仓库配置在: E:/repository/maven/repos

        
              
               
                      远程仓库配置 
               
       
  

私服:私服是一种特殊的远程仓库,它是架设在局域网中的仓库服务,私服代理广域网上的远程仓库,供局域网内的Maven用户使用。当Maven需要下载构件的时候,它从私服请求,如果私服上不存在该构件,则从外部的远程仓库下载,缓存在私服上之后,再为Maven的下载请求提供服务。因此,一些无法从外部仓库下载到的构件也能从本地上传到私服上供大家使用。 私服的好处:①提高稳定性,增强控制 ②节省自己的外网速度 ③加速Maven构建 ④降低中央仓库的负荷

  • 中央仓库:该仓库存储了互联网上的jar,由Maven团队来维护,地址是:http://repo1.maven.org/maven2/。

Maven 常用命令

mvn clean:表示运行清理操作(会默认把target文件夹中的数据清理)。
mvn clean compile:表示先运行清理之后运行编译,会将代码编译到target文件夹中。
mvn clean test:运行清理和测试。
mvn clean package:运行清理和打包。
mvn clean install:运行清理和安装,会将打好的包安装到本地仓库中,以便其他的项目可以调用。
mvn clean deploy:运行清理和发布(发布到私服上面)。

POM

在创建 POM 之前,我们首先需要描述项目组 (groupId), 项目的唯一ID。


 
    
    4.0.0
    
    asia.banseon
    
    banseon-maven2
    
    jar
    
    1.0-SNAPSHOT
    
    banseon-maven
    
    http://www.baidu.com/banseon
    
    A maven project to study maven.

    
        
            
            org.apache.maven
            
            maven-artifact
            
            3.8.1
            
            jar
            
            
            
            test
            
            
            
            
                
                    spring-core
                    org.springframework
                
            
            
            true
        
    

IntelliJ IDEA中Maven插件配置

IntelliJ已经内置了对Maven插件的支持,当然你也可以配置自己的Maven,只需要进入File->Settings->Maven->Maven home directory|User settings file|Local repository配置即可。注意如果使用自己配置的Maven,那么一定要勾选Override,否则配置不生效。


下载Maven仓库的索引
在配置完成之后就可以下载仓库索引了,注意这是一个非常耗时的过程,建议利用晚上或者出去午饭时间下载。下载过程及下载完成之后状态如下图所示。

你可能感兴趣的:(Maven 浅析)