zoukankan      html  css  js  c++  java
  • maven 配置

    转载自 http://blog.csdn.net/ljfbest/article/details/8045988

    安装好maven后,想要使用他的一些命令,需要配置环境变量PATH:D:\study\apache-maven-3.0.4\bin

    运行mvn命令实际上是执行了Java命令,既然是运行Java,那么运行Java命令可用的参数当然也应该在运行mvn命令时可用。这个时候,MAVEN_OPTS环境变量就 能派上用场。 设置MAVEN_OPTS的值为:-Xms128m -Xmx512m,因为Java默认的最大可用内存往往不能够满足Maven运行的需要,比如在项目较大时,使用Maven生成项目站点需要占用大量的内 存,如果没有该配置,我们很容易得到java.lang.OutOfMemeoryError。

    settings.xml :Maven用户可 以选择配置$M2_HOME/conf/settings.xml或者~/.m2/settings.xml。前者是全局范围的,整台机器上的所有用户都 会直接受到该配置的影响,而后者是用户范围的,只有当前用户才会受到该配置的影响。 推荐使用用户范围的settings.xml,主要原因是为了避免无 意识地影响到系统中的其他用户。如果有切实的需求,需要统一系统中所有用户的settings.xml配置,当然应该使用全局范围的 settings.xml。 

    修改中央仓库位置:修改settings.xml 中 <localRepository>D:/java/repos</localRepository> 即以后下载的东西就在D:/java/repos  拷贝到任一位置当做用户settings.xml 

     中央仓库无法访问解决办法,搜了好长时间原来是联通网的原因,无语……

      第一种:http://blog.csdn.net/shycx/article/details/7726600

    运行如下命令尝试快速构建一个maven项目:
    mvn archetype:generate
    结果就有问题:
    [INFO] Scanning for projects...
    Downloading: http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.4.1/maven-clean-plugin-2.4.1.pom
    [WARNING] Failed to retrieve plugin descriptor for org.apache.maven.plugins:maven-clean-plugin:2.4.1: Plugin org.apache.maven.plugins:maven-clean-plugin:2.4.1 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-clean-plugin:jar:2.4.1
    Downloading: http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-install-plugin/2.3.1/maven-install-plugin-2.3.1.pom
    [WARNING] Failed to retrieve plugin descriptor for org.apache.maven.plugins:maven-install-plugin:2.3.1: Plugin org.apache.maven.plugins:maven-install-plugin:2.3.1 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-install-plugin:jar:2.3.1
    Downloading: http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-deploy-plugin/2.5/maven-deploy-plugin-2.5.pom
    [WARNING] Failed to retrieve plugin descriptor for org.apache.maven.plugins:maven-deploy-plugin:2.5: Plugin org.apache.maven.plugins:maven-deploy-plugin:2.5 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-deploy-plugin:jar:2.5
    Downloading: http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-site-plugin/2.0.1/maven-site-plugin-2.0.1.pom

    ------

    这种hello world级别的操作出错,就怀疑是网络问题,于是让其他同事帮我尝试访问http://repo1.maven.org/maven2/org /apache/maven/plugins/maven-clean-plugin/2.4.1/maven-clean-plugin- 2.4.1.pom地址,发现完全没问题,感觉异常郁闷。后来网上查了一下,发现是因为联通网络下,无法访问maven.org网站。解决此问题理论上有 两个办法,一个是在maven的配置文件中设置代理,另一个是在maven的配置文件中设置联通网络下,能够访问的中央仓库的mirrors。因为也不好 找稳定的代理,我就在网上搜索了两个可用的mirror站点,配置方式如下:
    1、打开maven配置文件(maven安装目录下的conf目录下的settings.xml文件)
    2、搜索mirrors关键字,如果注释说明的下方没有  <mirrors>节点,则建立mirrors节点,带mirrors节点的所有配置如下(复制下面的内容,粘贴到配置文件中即可):
       <mirrors>
        <!-- mirror
         | Specifies a repository mirror site to use instead of a given repository. The repository that
         | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
         | for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
         |
        <mirror>
          <id>mirrorId</id>
          <mirrorOf>repositoryId</mirrorOf>
          <name>Human Readable Name for this Mirror.</name>
          <url>http://my.repository.com/repo/path</url>
        </mirror>
        -->
         <mirror> 
               <id>ibiblio.org</id> 
               <name>ibiblio Mirror of http://repo1.maven.org/maven2/</name> 
               <url>http://mirrors.ibiblio.org/pub/mirrors/maven2</url> 
               <mirrorOf>central</mirrorOf> 
               <!-- United States, North Carolina --> 
         </mirror>
         <mirror>  
             <id>jboss-public-repository-group</id>  
             <mirrorOf>central</mirrorOf>  
             <name>JBoss Public Repository Group</name>  
             <url>http://repository.jboss.org/nexus/content/groups/public</url>  
         </mirror>    
      </mirrors>
     第二种:
    http://www.oschina.net/question/96320_60348

    修改host文件夹完美解决 :加入 72.21.81.253    repo1.maven.org


    第三种:设置HTTP代理   
    有时候你所在的公司由于安全因素考虑,要求你使用通过安全认证的代理访问因特网或无法访问。这种情况下,就需要为Maven配置HTTP代理,才能让它正 常访问外部仓库,以下载所需要的资源。 首先确认自己无法直接访问公共的Maven中央仓库,直接运行命令ping repo1.maven.org可以检查网络。如果真的需要代理,先检查一下代理服务器是否畅通,比如现在有一个IP 地址为218.14.227.197,端口为3128的代理服务,我们可以运行telnet  218.14.227.197  3128来检测该地址的该端口是否畅通。如果得到出错信息,需要先获取正确的代理服务信息;如果telnet 连接正确,则输入ctrl+],然后q,回车,退出即可。 检查完毕之后,编辑~/.m2/settings.xml文件(如果没有该文件,则复 制$M2_HOME/conf/settings.xml)。添加代理配置如下:   
    <settings> 
    -----------
    <proxies> 
        <proxy> 
     
          <id>my-proxy</id> 
          <active>true</active> 
          <protocol>http</protocol> 
          <host>218.14.227.197</host> 
          <port>3128</port> 
          <!--  
          <username>***</username> 
          <password>***</password> 
          <nonProxyHosts>repository.mycom.com|*.google.com</nonProxyHosts> 
          --> 
        </proxy> 
      </proxies> 
    -----------------
    </settings> 
    这段配置十分简单,proxies下可以有多个proxy元素,如果你声明了多个proxy元素,则默认情况下第一个被激活的proxy会生效。这里声明 了一个id为my-proxy的代理,active的值为true 表示激活该代理,protocol表示使用的代理协议,这里是http。当然,最重要的是指定正确的主机名(host 元素)和端口(port 元素)。上述XML配置中我注释掉了username、password、nonProxyHost几个元素,当你的代理服务需要认证时,就需要配置 username和password。nonProxyHost元素用来指定哪些主机名不需要代理,可以使用  |  符号来分隔多个主机名。此外,该配置也支持通配符,如*.google.com表示所有以google.com结尾的域名访问都不要通过代理


    pom.xml:

    就像Make的Makefile,Ant的build.xml一样,Maven项目的核心是pom.xml。POM(Project Object Model,项目对象模型)定义了项目的基本信息,用于描述项目如何构建,声明项目依赖,等等。现在我们先为Hello World项目编写一个最简单的pom.xml。 

    1. <?xml version="1.0" encoding="UTF-8"?>      
    2.   <project xmlns="http://maven.apache.org/POM/4.0.0"     
    3.           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0   http://maven.apache.org/maven-v4_0_0.xsd">      
    4.       
    5.     <modelVersion>4.0.0</modelVersion>      
    6.     <groupId>com.juvenxu.mvnbook</groupId>      
    7.     <artifactId>hello-world</artifactId>      
    8.     <version>1.0-SNAPSHOT</version>      
    9.     <name>Maven Hello World Project</name>      
    10.  </project>        

    代码的第一行是XML头,指定了该xml文档的版本和编码方式。紧接着是project元素,project是所有pom.xml的根元素,根元素 下的第一个子元素modelVersion指定了当前POM模型的版本,对于Maven2及Maven3来说,它只能是4.0.0。 这段代码中最重要的 是groupId,artifactId和version三行。这三个元素定义了一个项目基本的坐标,在Maven的世界,任何的jar、pom或者 war都是以基于这些基本的坐标进行区分的。 groupId定义了项目属于哪个组,这个组往往和项目所在的组织或公 司存在关联,譬如你在googlecode上建立了一个名为myapp的项目,那么groupId就应该是com.googlecode.myapp,如 果你的公司是mycom,有一个项目为myapp,那么groupId就应该是com.mycom.myapp。本书中所有的代码都基于groupId com.juvenxu.mvnbook。 artifactId定义了当前Maven项目在组中唯一的ID,我们 为这个Hello World项目定义artifactId为hello-world,而在前面的groupId为com.googlecode.myapp的例子中,你可 能会为不同的子项目(模块)分配artifactId,如:myapp-util、myapp-domain、myapp-web等等。version指 定了Hello World项目当前的版本——1.0-SNAPSHOT。SNAPSHOT意为快照,说明该项目还处于开发中,是不稳定的版本。随着项目的发 展,version 会不断更新,如升级为1.0、1.1-SNAPSHOT、
    1.1、2.0等等。

    maven项目骨架archetype:

    项目中有一些Maven的约定:在项目的根目录中放置pom.xml,在src/main/java目录中放置项目的主代码,src/main/java/resources存放源代码资源文件,在src/test/java中放置项目的测试代码
    简单的运行: mvn archetype:generate 就可以构造出这个骨架 Maven会提示我们输入要创建项目的groupId、artifactId、  version、以及包名package

    常用命令:编译源代码: mvn compile   编译测试代码:mvn test-compile     运行测试:mvn test    产生site:mvn site    打包:mvn package   在本地Repository中安装jar:mvn install    清除产生的项目:mvn clean  

  • 相关阅读:
    洛谷 P1414 又是毕业季II Label:None
    洛谷 P1372 又是毕业季I Label:None
    洛谷 P1111 修复公路 Label:并查集
    高精度特别策划 加减乘除余~~~
    洛谷 P1967 货车运输 Label: 倍增LCA && 最小瓶颈路
    数组指针和指针数组的区别
    堆和栈的区别
    JAVA8 十大新特性详解
    自己在菜单栏中加了一项打开文件的菜单后窗口不刷新 单击才刷新
    Windows 7 OpenGL配置
  • 原文地址:https://www.cnblogs.com/chenying99/p/3127930.html
Copyright © 2011-2022 走看看