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目录

文件分析

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

    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等。


    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文件的默认配置如下:
<!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ${user.home}/.m2/repository
   -->

需求位置

  • 改变仓库位置,由于仓库内容会变多,我们一般不会设置在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如下:
<!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ${user.home}/.m2/repository
   -->
  <localRepository>D:\Soft\maven\maven_jar\repository</localRepository>
  • 方案2(针对eclipse设置maven配置文件):新建D:\Soft\maven\maven_jar\repository目录,将setting.xml文件拷贝一份到目录下。然后修改该目录下的setting.xml文件,修改如下:
<!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ${user.home}/.m2/repository
   -->
  <localRepository>D:\Soft\maven\maven_jar\repository</localRepository>

此时执行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文件,修改如下:
<!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ${user.home}/.m2/repository
   -->
  <localRepository>D:\Soft\maven\maven_jar\repository</localRepository>

设置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。
    添加代理如下:

 <!-- proxies
   | This is a list of proxies which can be used on this machine to connect to the network.
   | Unless otherwise specified (by system property or command-line switch), the first proxy
   | specification in this list marked as active will be used.
   |-->
  <proxies>
    <!-- proxy
     | Specification for one proxy, to be used in connecting to the network.
      -->
    <proxy>
      <id>my-proxy</id>
      <active>true</active>
      <protocol>http</protocol>
      <host>218.14.227.197</host>
      <port>3128</port>
      <!-- 
      <username>proxyuser</username>
      <password>proxypass</password>
      <nonProxyHosts>local.net|some.host.com|*.google.com</nonProxyHosts>
       -->
    </proxy>

<!--<proxy>
      <id>optional</id>
      <active>true</active>
      <protocol>http</protocol>
      <username>proxyuser</username>
      <password>proxypass</password>
      <host>proxy.host.net</host>
      <port>80</port>
      <nonProxyHosts>local.net|some.host.com</nonProxyHosts>
    </proxy>
    -->
  </proxies>
  • 解释
    声明一个id为my-proxy的代理,active为true表示激活该代理,protocol代表使用的代理协议,这里是http。host主机名(可填ip或域名),port端口。当代理需要服务器需要认证时就要配置username和password。nonProxyHost元素用来指定哪些主机名不需要dialing,可以用"|"符号分隔多个主机名。此外支持通配符,如*.google.com表示所有以google.com结尾的域名访问都不要通过代理。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,744评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,505评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,105评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,242评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,269评论 6 389
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,215评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,096评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,939评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,354评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,573评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,745评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,448评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,048评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,683评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,838评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,776评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,652评论 2 354

推荐阅读更多精彩内容