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.b2Try downloading the file manually from:
http://www.apache.org/dist/xml/commons/binaries/xml-commons-1.0.b2.tar.gzThen, 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 secResults :
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
- Maven入门实践:从安装到创建第一个project
- Cocos从入门到精通--《创建第一个项目:HelloWorld》
- SSM项目从零开始到入门002-创建第一个maven项目
- Python第一讲从安装到入门
- 第一个 Rails App 从安装到创建(windows版本)
- Android三十个月从入门到精通--第一范式
- Kubernetes 从入门到进阶 第一个Helloworld程序
- 机器学习:从入门到第一个模型
- 机器学习:从入门到第一个模型
- Maven入门指南② :Maven 常用命令,手动创建第一个 Maven 项目
- Maven入门指南② :Maven 常用命令,手动创建第一个 Maven 项目
- Maven从入门到入门
- 创建第一个Maven项目
- 用maven创建第一个maven项目
- Maven入门-3-在windows7上创建第一个Maven项目
- 《C++从入门到实践》
- c++从入门到实践
- Docker从入门到实践
- 利用IP,用C#来获得远程主机的MAC地址
- 什么是MAC地址,MAC地址的作用?
- 招募好友一起研究IM,OpenFire,Spark聊天软件
- 技术开篇-java输入输出流
- 谷歌浏览器的源码分析(10)
- Maven入门实践:从安装到创建第一个project
- 关于 errno.h
- javascript有趣的现象----函数
- Hello,Google App Engine
- javascript学习进阶-----科里化(currying)
- javascript学习进阶----必包
- 写点数据结构学习心得
- extern "c"小结
- javascript学习进阶---js之美