`
hz_chenwenbiao
  • 浏览: 1007905 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

maven手册(转)

阅读更多

1.1准备

(1)  eclipse中使用jdk1.5,不要使用jre,环境变量java_home也要使用1.5

(2)  安装maven

解压缩apache-maven-2.0.9.zip%M2_HOME%

比如:D:\software\\apache-maven-2.0.9,在环境变量中增加M2_HOME,在path中添加:“%M2_HOME%\bin” 。

(3)  在开发环境中安装m2插件。

ü  Eclipse: 直接将共享的m2eclipse插件拷贝到eclipse安装目录对应的pluginfeatures目录下。

ü  myEclipse: myEclipse6.5自带了maven4myeclipse,但由于bug超多,在安装之前需要先卸载,手工删除MyEclipse安装目录下myeclipse/eclipse/featuresmyeclipse/eclipse/plugins这两个目录下与maven相关的文件,可以先在这2个目录中搜索一下,带有“maven” 的文件和文件夹全部删除即可,然后再拷贝插件到pluginfeatures目录下。

ü  如果需要自行下载m2插件安装,步骤为:help->soft ware updates->find and install->search new features to install->new remote sitename名称输入“maven”,URL为:“http://m2eclipse.sonatype.org/update/”。    注意:如果查找到多个“maven_embedder 2.1.0.20080530-2300,只能选择其中一个,否则可能出现安装的插件不可用的错误。

(4)  设置“M2_REPO 变量”

ü  window >> preferences >> Java >> Build Path >> Classpath Variables,新建一个 M2_REPO 的变量,变量值指向自己本地数据仓库位置。例如D:/myRepository/repository

(5)  将工程导入eclipse中,注意eclipse中的setting.xml与安装mavenconf目录下的setting.xml不同,maven2种级别的setting.xml

ü  %M2_HOME%/conf/settings.xml,这是针对该部电脑的所有用户的profiles,是global profiles,它会影响所有的maven project build

ü  <your -home-directory>/.m2/settings.xml,这是针对每个用户的profiles,是user级的profiles,它会影响当前用户的所有maven project build

ü  将共享的setting.xml拷贝到如图所示的位置中:<your -home-directory>/.m2/settings.xml。修改settings.xml localRepository的值为自己的存储位置。

 

(6)  setting.xml配置所指定的repository目录中拷贝maven插件。(目前这些插件没有上传到111.74机器,后续如果跟cmp使用同一个私服的话,使用时会自动下载。)

(7)  在工程所在的目录中使用cmd,敲入 mvn compile,进行编译,并下载工程依赖的jar包。(jar包较多,需要下载一段时间。)

  

如果需要经常使用cmd运行maven命令,建议在右键菜单中增加“cmd”,具体方法为:

ü  打开“我的电脑”,点击菜单中的“工具”-“文件夹选项”,选择“文件类型”,找到“()资料夹”,点“高级”,“新建”,在“操作”中填入 “CMD”(其实爱填什么都可以),“用于执行操作的应用程序”中填入“cmd.exe /k cd %1,确定。

 

 

1.2配置setting.xml

1.2.1指定本地仓库,localRepository如下设置:

<localRepository>D:/myRepository/repository</localRepository>

位置根据自己的存储情况而定,这个位置要跟1.1的第四步设置的路径相同。

1.2.2指定私服,下载jar包。

1<offline>false</offline>

2.设置profile构建环境。

<profiles>
……
<profile>
            <id>artifactory</id> 
            <repositories> 
                  <repository> 
                        <id>ext-releases-local</id> 
                        <url>http://10.164.111.74:8082/artifactory/repo</url> 
                        <snapshots> 
                              <enabled>false</enabled> 
                        </snapshots> 
                  </repository> 
                  <repository> 
                        <id>ext-snapshots-local</id> 
                        <url>http://10.164.111.74:8082/artifactory/repo</url> 
                        <releases> 
                              <enabled>false</enabled> 
                        </releases> 
                  </repository> 
            </repositories> 
            <pluginRepositories> 
                  <pluginRepository> 
                        <id>plugins-releases-local</id> 
                        <url>http://10.164.111.74:8082/artifactory/repo</url> 
                        <snapshots> 
                              <enabled>false</enabled> 
                        </snapshots> 
                  </pluginRepository> 
                  <pluginRepository> 
                        <id>plugins-snapshots-local</id> 
                        <url>http://10.164.111.74:8082/artifactory/repo</url> 
                        <releases> 
                              <enabled>false</enabled> 
                        </releases> 
                  </pluginRepository> 
            </pluginRepositories> 
      </profile>
<profiles>

 3.最后激活该profile

<activeProfiles>
    <activeProfile>artifactory</activeProfile>
  </activeProfiles>

 4.附profile配置说明:

< profiles >:我们可以在profile中定义一组我们需要使用的私服上仓库
<profiles>
    <profile>
      <id> artifactory</id>   
     <!--profile的ID-->
          <repositories>
              <repository>
                  <id> ext-snapshots-local</id>
               <!--仓库的id,对应与私服上的Local或Remote仓库-->
              <name>pmp remote snapshot repository</name>                        <!--该仓库的描述-->
<url>http://10.164.79.191:8081/artifactory/libs-snapshots</url>   <!--该仓库的地址-->
<snapshots>                                              
    <!-- snapshot项-->
         <enabled>true</enabled>      
 <!--true表示该仓库处理snapshot类型的构件-->
         <updatePolicy>always</updatePolicy>
<!--这里可取值为:always(一直),daily(默认,每日),interval:X(这里X以分钟为单位的时间间隔),或者never(从不)。-->
           <!--Tips:对于snapshot,建议设置为always,它可以保证引用的snapshot版本的构件自动更新-->
         </snapshots>
             <releases>      
               <!--release项目-->
               <enabled>false</enabled> 
   <!--false表示该仓库不处理Release型的构件-->
                  </releases>
           </repository>
          </repositories>
      </profile>
  </profiles>  
 1.2.3如果是代理上网,需设置代理。

如果需要自动下载internet上的jar包,按照如下进行设置。

注意,如果使用:mvn deploy命令部署工程,则需要注释掉该段代码,否则出现http504错误。

<proxies>
    <proxy>
      <id>optional</id>
      <active>true</active>
      <protocol>http</protocol>
      <host>proxycn2.huawei.com</host>
      <port>8080</port>
      <nonProxyHosts>local.net,some.host.com</nonProxyHosts>
    </proxy>
  </proxies>
 1.2.4 设置私服的登陆信息。

 

如果不进行设置,会出现如下错误:

Error deploying artifact: Failed to transfer file: http://10.164.111.74:8082/artifactory/*.jar. Return code is: 401

配置用户密码:

<servers>
    <server>
      <id>artifactory</id>
      <username>admin</username>
      <password>password</password>
    </server>
  </servers> 
  ……
   <repository>
         <id>internal-artifactory</id>
          <url>http://10.164.111.74:8082/artifactory/repo</url>
</repository>
 

1.3 Maven常用命令

maven定义的主要生命周期:

validate: 验证项目是否正确以及相关信息是否可用。

compile: 编译。

test: 通过junit进行单元测试。

package: 根据事先指定的格式(比如jar),进行打包。

integration-test: 部署到运行环境中,准备进行集成测试。

verify: 对包进行有效性性和质量检查。

install: 安装到本地代码库。

deploy: 在集成或发布环境,将包发布到远程代码库。

常用命令:

ü  mvn  archetype:create -DgroupId=com.huawei.bme -DartifactId=test –Dversion=1.0

创建普通应用项目

ü  mvn archetype:create -DgroupId=com.huawei.bme -DartifactId=testWeb -DarchetypeArtifactId=maven-archetype-webapp

创建WEB项目

ü  mvn eclipse:eclipse

生成 Eclipse 项目文件及包引用定义,注意,需事先定义Classpath Variables: M2_REPO,指向本地maven类库目录。

ü  mvn compile

编译主程序源代码,不会编译test目录的源代码。第一次运行时,会下载相关的依赖包,可能会比较费时。

ü  mvn test-compile

编译测试代码,compile之后会生成target文件夹,主程序编译在classes下面,测试程序放在test-classes下。

ü  mvn test

运行应用程序中的单元测试

ü  mvn site

生成项目相关信息的网站,发布站点在target/site里。

ü  mvn clean

清除目标目录(target)中的生成结果。

ü  mvn package

依据项目,打包类型为jar的,在目录target中就会生成 jar 文件,打包类型为war的,生成 war 文件,打包之前会进行编译,测试。

ü  mvn install

在本地 Repository 中安装 jar

ü  mvn deploy

在远程 Repository 中发布。

ü  mvn install -DskipTests=true

忽略单元测试,在本地 Repository 中安装 jar

ü  mvn eclipse:clean

清除 Eclipse 项目文件及包引用定义

ü  mvn install:install -file -Dfile=D:/opensource/dbunit-2.2/dbunit-2.2.jar -DgroupId=dbunit-DartifactId=junitperf -Dversion=2.2 -Dpackaging=jar

发布到本地仓库

ü  mvn deploy:deploy -file -DgroupId=staticComparison -DartifactId=static-comparison -Dversion=2.0 -Dpackaging=jar -Dfile=c:/staticComparison_2.0.jar

发布到远程仓库

ü  mvn help:describe -Dplugin=compiler -Dmojo=compile –Dfull

列出Compiler 插件的compile 目标的所有信息

ü  pom: mvn help:effective-pom

 查看实际使用的pom

ü  mvn dependency:analyze

分析项目依赖

1.4 FAQ

1.4.1创建maven 工程时报找不到“RELEASE”版本的插件错误

当使用mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app来创建一个新项目时,有时候会出现以下错误:

。。。。。。。 
[INFO] Velocimacro : initialization complete. 
[INFO] Velocity successfully started. 
[INFO] [archetype:create] 
[INFO] Defaulting package to group ID: com.mycompany.app 
[INFO] 
------------------------------------------------------------------------ 
[ERROR] BUILD ERROR 
[INFO] 
------------------------------------------------------------------------ 
[INFO] Failed to resolve artifact. 

GroupId: org.apache.maven.archetypes 
ArtifactId: maven-archetype-quickstart 
Version: RELEASE 

Reason: Unable to determine the release version 
Try downloading the file manually from the project website. 

Then, install it using the command: 
    mvn install:install-file -DgroupId=org.apache.maven.archetypes 
-DartifactId=maven-arch 
etype-quickstart \ 
        -Dversion=RELEASE -Dpackaging=jar -Dfile=/path/to/file

……

由于在maven本地仓库中,可能更新了某个plug-in的版本,但本地plug-in metadata没有版本的信息或者没有最新版本的信息,致使maven无法下载正确的版本。具体步骤如下:

1.找到最新的插件版本,如果私服上没有,则需要在网上下载,网址:http://mirrors.ibiblio.org/pub/mirrors/maven2/org/apache/maven/archetypes/maven-archetype-quickstart/ 
2.
选择最新版本并且下载最新的“maven-archetype-quickstart-1.0-alpha-4.jar ”文件 
3.
安装这个archetypemaven本地仓库。使用命令如下:mvn install:install-file -DgroupId=org.apache.maven.archtypes -DartifactId=maven-archetype-quickstart -Dversion=1.0-alpha-4 -Dpackaging=jar -Dfile=c:\7000\maven\maven-archetype-quickstart-1.0-alpha-4.jar。注意-Dfile是刚下载的文件的路径。

1.4.2 Deploy时出现: http502 504错误

网关错误, 由作为代理或网关的服务器使用,表示不能及时地从远程服务器获得应答, deploy时需要向私服上传releasesnapshot版本的归档包,所以出现该错误时要先检查是否可以连接到私服。 如果setting.xml中设置了<proxies>    <proxy>…… </proxy></proxies>代理,要取消。

1.4.3 Deploy时出现: code 401错误

错误描述为:

Error deploying artifact: Failed to transfer file: http://10.164.111.74:8082/artifactory/*.jar. Return code is: 401

参照1.2.4设置私服登陆信息。

1.4.4 mvn eclipse:eclipse 导入工程后出现:Unbound classpath variable: M2_REPO 错误

建立一个工程后,执行 mvn eclipse:eclipse,会产生eclipse的工程文件,但是第一次用eclipse打开工程后,发现报如下错误:Unbound classpath variable: 'M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar' in project my-webapp ,需要在Eclipse 中配置 M2_REPO 变量。

配置步骤:window >> preferences >> Java >> Build Path >> Classpath Variables,新建一个 M2_REPO 的变量,变量值指向你系统的Maven2的数据仓库位置。例如前面提到了D:/myRepository/repository

分享到:
评论

相关推荐

    maven 安装配置手册

    ### Maven安装配置手册知识点概述 #### 一、Maven概览 Maven是一个项目管理和综合工具,主要用于Java项目。它的设计理念是“约定优于配置”,即通过预设的规则和标准来减少配置工作量,使开发者能够更加专注于业务...

    Maven使用手册V3.0

    《Maven使用手册V3.0》 Maven,一个由Apache软件基金会开发的项目管理工具,旨在提供一个一致且可重复的方式来构建和管理Java项目。它的核心理念是“约定优于配置”,即通过一套标准的项目结构和自动化构建过程,...

    maven完全手册

    ** Maven完全手册 ** 在Java开发领域,Maven是一个不可或缺的构建工具,它极大地简化了项目的构建、管理和依赖管理过程。这份“maven完全手册”是个人精心整理的中文文档,旨在帮助开发者全面理解并掌握Maven的使用...

    maven使用手册

    Apache Maven 是一个强大的项目管理和构建工具,尤其在Java开发领域广泛应用。它的主要目的是简化软件项目的构建过程,通过一套约定的规则和自动化流程,使得开发者能够更专注于代码本身,而不是构建细节。 1. ...

    Maven2指导手册

    **Maven2 指南** Maven2 是一个强大的构建工具,专为Java项目设计,旨在简化构建过程,统一项目配置。相比Ant,Maven2 提供了更高效的依赖管理和构建流程,使得开发人员能够更加专注于代码本身,而不是构建过程。 ...

    Maven学习手册

    **Maven学习手册** 在软件开发领域,Maven是一个强大的构建工具,主要用于Java项目管理。它简化了构建过程,依赖管理和项目的标准化。本手册旨在帮助开发者深入理解和有效地使用Maven,结合作者的实际项目经验,...

    maven安装及使用手册

    本手册将详细阐述Maven的安装过程及其在实际开发中的使用方法。 ### Maven的核心概念 1. **项目对象模型(POM)**: POM是Maven的核心,它是一个XML文件,包含了项目的基本信息,如项目名称、版本、依赖关系、构建...

    Maven2中文使用手册

    ** Maven2 中文使用手册 ** Maven 是一个强大的项目管理工具,主要应用于Java开发领域。它通过自动化构建过程,简化项目的构建、依赖管理和文档生成。Maven2 是 Maven 的第二个主要版本,虽然现在已经更新到了 ...

    Maven完全适用手册

    **Maven完全适用手册概述** Maven是一款强大的Java项目管理和集成工具,它通过XML格式的配置文件(pom.xml)来管理项目的构建、报告和依赖关系。Maven2相较于其前身Maven1进行了大量改进,提供了更高效、简洁的体验...

    Maven 2 使用手册

    Maven 2 使用手册,chm中文格式。

    Nexus Maven 操作手册.pdf

    在Ubuntu16.04平台搭建maven私有服务器,包括私服的配置和在项目中私有仓库引入和使用。 Maven可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。 Nexus 是一个强大的仓库管理器。

    Nexus搭建Maven私服指导手册

    ### Nexus搭建Maven私服指导手册 #### 一、Nexus使用背景 在现代软件开发过程中,Maven作为构建工具在Java项目中占据了重要的地位。Maven通过定义项目的对象模型(POM),仅需一个简单的命令就能实现构建和依赖...

    maven+nexus完整手册

    ### Maven+Nexus 完整手册 #### 一、Nexus 安装与启动 Nexus 是一款由 Sonatype 提供的开源组件管理平台,能够帮助开发者有效地管理项目的依赖关系。安装 Nexus 的步骤主要包括: 1. **下载 Nexus**:访问官方...

    maven2完全使用手册

    Maven2完全使用手册旨在全面讲解Maven2的使用和配置,帮助开发者更好地理解和掌握这款强大的Java项目管理工具。相较于Maven1,Maven2进行了大幅度的改进,提升了性能并简化了配置过程。 1. **更快、更简单**:Maven...

Global site tag (gtag.js) - Google Analytics