Maven入门实践:从安装到创建第一个project

来源:互联网 发布:linux ab压力测试工具 编辑:程序博客网 时间:2024/05/21 19:43

 

以Maven2.0.9版本为例,在win xp环境下安装及创建第一个简单的工程,获得对maven最初步的实践经验。主要参考了Maven官方网站提供的5分钟快速入门手册。

 

maven 主页
http://maven.apache.org/

 

1》下载maven


 http://maven.apache.org/download.xml,下载windows下的zip文件 apache-maven-2.0.9-bin.

 

2》安装


详细安装步骤请参考下载页面的原始说明,下面只是一个概要总结


 0.前提: JRE已经安装,版本在1.4以上
 1.解压zip文件到需要安装的目录下,比如c:/,则解压并生成c:/zipapache-maven-2.0.9
   此目录为maven的根目录
 2.系统环境变量中添加
   M2_HOME ,值为c:/zipapache-maven-2.0.9
   M2, 值为%M2_HOME%/bin
   更新Path, 添加 %M2% 到Path值中
   可选参数 MAVEN_OPTS,值为 -Xms256m -Xmx512m
 3.测试是否安装成功
   mvn --version ,该命令执行后有详细的版本信息打印,则表示前面的安装已经成功

 

3》maven安装目录的初始内容

 

初始内容很少,只有一个jar文件位于lib下。
maven的很多jar文件都是在后继步骤中从internet上自动download下来的

dir 当前安装目录内容为:
<DIR>          .
<DIR>          ..
<DIR>          bin
<DIR>          boot
<DIR>          conf
<DIR>          lib
         LICENSE.txt
         NOTICE.txt
         README.txt
 


 4》创建自己的第一个项目

 

参考Get start in 5 minutes快速入门手册: http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html

 

以创建项目 my-app为例,执行命令mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app1

此过程中,Maven会花相当长的时间从网上自动download 其创建project所必须的jar文件。如果网络状况不好,该命令会因超时自动终止,并报告错误,比如

Downloading: http://repo1.maven.org/maven2/org/apache/maven/shared/maven-invoker
/2.0.6/maven-invoker-2.0.6.jar
24K downloaded
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Failed to resolve artifact.
1) xml-apis:xml-apis:jar:1.0.b2

  Try downloading the file manually from:
      http://www.apache.org/dist/xml/commons/binaries/xml-commons-1.0.b2.tar.gz

  Then, install it using the command:
      mvn install:install-file -DgroupId=xml-apis -DartifactId=xml-apis -Dversio
n=1.0.b2 -Dpackaging=jar -Dfile=/path/to/file

表面看是由于文件找不到而出错,实际上多数情况下是因为文件下载超时。建议重新执行命令,maven会继续下载文件。有时候要反复多次,才能把所需的文件都下载回来。这些文件都存放在 <user home>/.m2/repository目录下 (因为之前没有重新配置repository的路径,直接用的是缺省路径。如何配置maven,请参考http://maven.apache.org/guides/mini/guide-configuring-maven.html)。


 

命令成功的标志是
1)命令执行结束并打印信息如下


[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------

 

2)对应的my-app1目录树被创建


my-app1
|-- pom.xml
`-- src
    |-- main
    |   `-- java
    |       `-- com
    |           `-- mycompany
    |               `-- app
    |                   `-- App.java
    `-- test
        `-- java
            `-- com
                `-- mycompany
                    `-- app
                        `-- AppTest.java

 

App.java 是自动生成的简单程序,可以打印Hello World

 

5》Build 工程


在my-app目录下执行命令 :mvn package
这次又花了很长时间download 一些jar包,比如junit jar,codehaus jar等,时间的长短取决于网络连接的状况。


mvn package 实际包含了如下子过程:


[INFO] [compiler:compile]
[INFO] Compiling 1 source file to C:/MavenProj/my-app1/target/classes
[INFO] [resources:testResources]
................
[INFO] [compiler:compile]
[INFO] Compiling 1 source file to C:/MavenProj/my-app1/target/classes
[INFO] [resources:testResources]
[INFO] Using default encoding to copy filtered resources.
.................
[INFO] [compiler:testCompile]
[INFO] Compiling 1 source file to C:/MavenProj/my-app1/target/test-classes
[INFO] [surefire:test]
[INFO] Surefire report directory: C:/MavenProj/my-app1/target/surefire-reports
-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.mycompany.app.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.125 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

.........
[INFO] [jar:jar]
[INFO] Building jar: C:/MavenProj/my-app1/target/my-app1-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 21 minutes 29 seconds
[INFO] Finished at: Fri Sep 19 21:33:11 CST 2008
[INFO] Final Memory: 7M/12M
[INFO] ------------------------------------------------------------------------

 

到命令执行结束居然费时21分钟之久。当然,第二次执行mvn package速度就很快了,一般几秒即可。原因是所有需要的jar文件都在第一次执行时下载到本地,只需执行目标任务package。

package结束后,my-app下会新生成一个target目录

 

target
├─classes
│  └─com
│      └─mycompany
│          └─app (java文件生成的class)
├─maven-archiver
├─surefire-reports (Junit用例的测试报告)
└─test-classes
    └─com
        └─mycompany
            └─app (test 文件的class)

 

6》Maven 的几个执行阶段

validate: 验证project是正确的,并且所有必需的信息都是可用的
compile: 编译代码及测试用例代码
test: 使用测试框架(如Junit)进行测试
package: 安装要求的格式对class进行打包,如JAR.
integration-test: 如有必要,可对打好的包需要被部署到特定的环境中做集成测试
verify: 执行并验证当前的包是正确的,并能满足质量要求
install: 将包存放到本地repository中,供其他有需要的本地projects使用
deploy: 拷贝最后生成的包到其他机器上,以便有需要的远地project使用。用于项目的发布和集成

 

可以根据特定的目的选取不同的阶段执行


7>> 小技巧 

1) 如何从Maven的服务器更快的下载所需文件?

答案是配置一个网络访问速度更快的镜像服务器。

在中国的用户,可以按照如下方式修改<user home>/.m2/setting.xml的配置: 

    <mirror>
<id>redv.com</id>
<url>http://mirrors.redv.com/maven2</url>
<mirrorOf>central</mirrorOf>
<!-- China, Shanghai -->
</mirror>
如此一来,所以的文件下载都可以通过访问在上海的镜像服务器来完成,速度要比访问国外的服务器(如http://repo1.maven.org/maven2/)快上很多倍。
具体的参数意义请参考http://maven.apache.org/guides/mini/guide-mirror-settings.html

2) 无法通过Maven库服务器获取的JavaMail,JSP jar
由于JavaMail等项目遵循Sun's Binary License,不允许Maven的库服务器提供下载分发服务,因此,我们不得不到其它网站去下载这些文件,然后手工安装到本地的repository目录下。
安装命令如下:
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> /
-DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>

关于这些有特殊要求的Sun Jars,请参考maven提供的声明文档 http://maven.apache.org/guides/mini/guide-coping-with-sun-jars.html
原创粉丝点击