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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值