美文网首页maven技术干货
maven---2目录分析和配置(重)

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

作者: zlcook | 来源:发表于2016-11-18 11:24 被阅读676次

设置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结尾的域名访问都不要通过代理。

相关文章

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

    设置MAVEN_OPTS环境变量 执行mvn命令会调用bin下面的脚本,而这些脚本实际是操作java命令。既然是运...

  • Docker安装Logstash

    拉取镜像 创建容器 创建要挂载的配置目录 设置配置目录权限 拷贝Logstash容器内部的配置 停止并删除容器 重...

  • ftp参数配置

    vsftpd匿名用户上传和下载的配置 看到很多朋友配置vsftpd时不能使用匿名用户上传和下载(创建目录或删除、重...

  • 一条简单update语句,mysql锁操作

    目录 前置知识 实例分析加锁情况 todo 结合参考文章0和参考文章1重新梳理下, ACID, explain分析...

  • mysql性能优化-慢查询分析、优化索引和配置

    mysql性能优化-慢查询分析、优化索引和配置 分类:Mysql/postgreSQL 目录 一、优化概述 二、查...

  • ActiveMQ(一)-简单入门

    一、目录分析 从上面看出一般的项目目录类似,简单分析下其作用: bin:为启动目录。 conf:为配置文件,核心文...

  • mysql配置

    目录 预备知识 主要配置解析 查看mysql状态&分析sql执行计划 主从同步配置 多实例配置 预备知识 如何查找...

  • samba环境部署

    一、安装samba软件 二、检查samba端口 三、创建目录和用户并授权 四、编辑smb.conf配置文件 五、重...

  • h5 网页版微信支付方式一

    网页版微信支付。 1、填写配置,包括开通微信支付,appid和key,配置支付目录,目录路径要文件所在目录,配置授...

  • spring cloud网关通过Zuul RateLimit 限

    目录 引入依赖 配置信息 RateLimit源码简单分析 RateLimit详细的配置信息解读 在平常项目中为了防...

网友评论

    本文标题:maven---2目录分析和配置(重)

    本文链接:https://www.haomeiwen.com/subject/fffjpttx.html