maven---2目录分析和配置(重)

设置MAVEN_OPTS环境变量

  • 执行mvn命令会调用bin下面的脚本,而这些脚本实际是操作java命令。既然是运行java命令,那么运行java命令可用的参数当然也能够在运行mvn命令时使用,比如-D就是java参数,当然还有-Xms 等。
  • 如果想在执行mvn时为java命令设置参数就可以把参数设置的MAVEN_OPTS环境变量中,通常需要设置MAVEN_OPTS的值为-Xms128m -Xmx521m,因为java默认的最大可用内存往往不能够满足Maven运行的需求,比如在项目较大时,使用maven生成项目站点需要占用大量内存,没有该配置,容易得到java.lang.OutOfMemeoryError,所以推荐为MAVEN_OPTS配置该值。

目录分析

在安装好maven后,进入maven解压目录,我的maven目录如下:

maven---2目录分析和配置(重)_第1张图片
maven目录

文件分析

  • bin: 该目录存放了mvn运行脚本。 在命令行中输入任何一条mvn命令时,实际上就是调用这些脚本。

    maven---2目录分析和配置(重)_第2张图片
    bin目录下文件

    • mvn和mvn.cmd脚本文件用来配置java命令,准备好classpath和相关的Java系统属性,然后执行Java命令。其中:
    • mvn是基于UNIX平台的shell脚本。shell脚本学习
    • mvn.cmd是基于windows平台的bat脚本。bat脚本的介绍
    • mvnDebug和mvnDebug.cmd两个文件作用是在运行maven时开启debug,以便调试maven本身。
    • m2.conf文件是classworlds的配置文件,后面介绍?
  • boot: 该目录只存放一个文件plexus-classworlds-2.5.2.jar


    boot目录中的文件
    • plexus-classworlds是一个类加载器框架,相对于默认的java类加载器,它提供了更丰富的语法以方便配置,Maven使用该框架加载自己的类库。classworlds更多信息
  • conf:目录包喊了maven的配置文件


    conf目录中的文件
    • settings.xml:很重要配置文件,直接修改该文件就能在机器上全局的定制Maven行为,一般更偏向于将文件复制到/.m2/目录下(表示用户目录),然后修改该文件,在用户范围定制Maven的行为。
  • lib:该目录包含了所有Maven运行时需要的Java类库,plexus-classworlds类加载器会从该文件夹下加载类到内存中。Maven本身是分模块开发的,因此用户能看到诸如maven-core-3.3.3.jar、maven-model-3.3.3.jar等。


    maven---2目录分析和配置(重)_第3张图片
    lib目录中文件一部分
    • 其中超级POM文件在包maven-model-builder-3.3.3.jar中的org/apache/maven/model/pom-4.0.0.xml路径下。对于maven2超级POM在lib/maven-x.x.x-uber.jar中的org/apache/maven/project/pom-4.0.0.xml目录下。
  • LICENSE记录了Maven使用软件许可证Apache License Version2.0
  • NOTICE记录了Maven包含的第三方软件
  • READAME.txt则包含了Maven的简介,包括安装需求、如何安装的简要指令等。

配置本地仓库

默认位置

  • 在使用maven开发过程中下载的依赖包都会存放的本地maven仓库中,maven的默认仓库位置为:${user.home}/.m2/repository。一般user.home为C盘下的用户文件夹。
    在setting.xml文件的默认配置如下:

需求位置

  • 改变仓库位置,由于仓库内容会变多,我们一般不会设置在C盘,我想设置D:\Soft\maven\maven_jar\repository为maven仓库。

操作

  • 方案1(推荐):新建D:\Soft\maven\maven_jar\repository目录,然后修改${user.home}/.m2/repository目录下的setting.xml文件,没有的话从maven的/config/setting.xml目录下拷贝过去。我的用户名为liang,则本地仓库地址为C:\Users\liang.m2\repository\,而Linux上的本地仓库地址为home/liang/.m2/repository/注意Liunx中以点(.)开头的文件或目录默认隐藏的,可以使用ls-a命令查看。
    修改setting.xml如下:

  D:\Soft\maven\maven_jar\repository
  • 方案2(针对eclipse设置maven配置文件):新建D:\Soft\maven\maven_jar\repository目录,将setting.xml文件拷贝一份到目录下。然后修改该目录下的setting.xml文件,修改如下:

  D:\Soft\maven\maven_jar\repository

此时执行mvn命令如果有依赖要下载还会下载到${user.home}/.m2/repository目录下,因为执行的命令时参考的setting.xml文件依然是原来的setting.xml文件而不是D:\Soft\maven\maven_jar\repository下的。

这个操作可以在eclipse中使用maven时,将setting.xml配置文件替换成D:\Soft\maven\maven_jar\repository下载setting.xml。

  • 方案3:新建D:\Soft\maven\maven_jar\repository目录,然后修改maven/config目录下的setting.xml文件,修改如下:

  D:\Soft\maven\maven_jar\repository

设置HTTP代理

需求

  • 公司出于安全考虑,要求使用通过安全认证的代理访问因特网,这时就需要maven配置http代理,才能正常访问外部仓库。

操作

  • 首先确认自己无法直接访问公共的maven中央仓库,运行ping repol.maven.org可以检查网络,在检查代理服务器是否畅通,比如现在有一个IP地址为218.14.227.197端口为3128的代理服务器,我们可以运行telnet 218.14.227.197 3128来检测改地址的该端口是否通畅。出错则获取正确的代理信息,如果telnet连接正确,则输入ctrl+],然后q,回车,退出即可。

  • 设置setting.xml文件,如果不想设置全局的,可以将setting.xml复制到~/.m2/settings.xml。
    添加代理如下:

 
  
    
    
      my-proxy
      true
      http
      218.14.227.197
      3128
      
    


  
  • 解释
    声明一个id为my-proxy的代理,active为true表示激活该代理,protocol代表使用的代理协议,这里是http。host主机名(可填ip或域名),port端口。当代理需要服务器需要认证时就要配置username和password。nonProxyHost元素用来指定哪些主机名不需要dialing,可以用"|"符号分隔多个主机名。此外支持通配符,如*.google.com表示所有以google.com结尾的域名访问都不要通过代理。

你可能感兴趣的:(maven---2目录分析和配置(重))