maven的安装和配置(手动和eclipse插件)

来源:互联网 发布:手机淘宝闲鱼官网主页 编辑:程序博客网 时间:2024/05/16 12:48

Maven是一个采用纯Java编写的开 源项目管理工具。Maven采用了一种被称之为project object model (POM)概念来管理项目,所有的项目配置信息都被定义在一个叫做POM.xml的文件中,通过该文件,Maven可以管理项目的整个声明周期,包括编 译,构建,测试,发布,报告等等。目前Apache下绝大多数项目都已经采用Maven进行管理。而Maven本身还支持多种插件,可以方便更灵活的控制 项目。
1.通过http://maven.apache.org/download.cgi官网下载最新版本 Maven 3.3.3 (Binary zip);

2.解压到D:盘
这里写图片描述

3.配置环境变量:
MAVEN_HOME : D:\apache-maven-3.3.3
MAVEN : %MAVEN_HOME%\bin
(可选) MAVEN_OPTS : -Xms256m -Xmx512m

4.验证是否安装成功:
(前提:jdk环境必须先安装好,否则后面无法正常编译项目)
检测方法:
a) 重新进入命令行(DOS窗口)模式,输入 echo %MAVEN_HOME% 如果能显示 D:\apache-maven-
3.3.3 说明环境变量起作用了
b) 输入 mvn -version,回车,如看到下面信息表示安装成功:
这里写图片描述

注意:如果出现错误,首先先检查jdk和jre的版本是否一致,同时查看下载的maven的readme.txt文件看此版本支持的jdk的最低版本(这里最低版本是1.7)。Java -version和javac -version

5.创建项目hello world:
(1)先创建项目的根目录,比如c:\test,命令行窗口下输入

cd /d c:\test
mvn archetype:generate

首次运行时,mvn会从远程”中央仓库”下载一些必需的文件到”本地仓库” - (如果你有兴趣,可以在等待下载过程中,观察一下”C:\Users\当前用户名.m2\repository”到底下载了些啥东东)

下载完成后(下一篇会讲解如何,在局域网环境中搭建“私服”,直接从局域网的代理仓库中下载这些依赖项),会自动进入交互模式,会让你输入一些基本信息,类似下面这样:

[INFO] Generating project in Interactive mode (这里会卡一会儿,因为要联网获取项目模板)
[INFO] No archetype defined. Using maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0)
Choose archetype:
1: remote -> br.com.ingenieux:elasticbeanstalk-service-webapp-archetype (A Maven Archetype Encompassing RestAssured, Jetty, Jackson, Guice and Jersey for Publishing JAX-RS-based Services on AWS’ Elastic Beanstalk Service)
… (这里会自动列出很多项目模板,每种模板前面会有一个数字序号)

336: remote -> org.apache.maven.archetypes:maven-archetype-quickstart (An archetype which contains a sample Maven project.)

Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 336: (这里根据每个人机器上安装的eclipse插件不同,可能默认的数字不是这个,先不管,直接回车)

Choose org.apache.maven.archetypes:maven-archetype-quickstart version:
1: 1.0-alpha-1
2: 1.0-alpha-2
3: 1.0-alpha-3
4: 1.0-alpha-4
5: 1.0
6: 1.1
Choose a number: 6: (直接回车)
Define value for property ‘groupId’: : cnblogs (可暂时先理解成类似package或namespace的名称,通常我们填写组织机构名称缩写)
Define value for property ‘artifactId’: : maven-hello-world (组件名称,可暂时理解成项目名称)
Define value for property ‘version’: 1.0-SNAPSHOT: : (版本号,直接回车,默认1.0-SNAPSHOT)
Define value for property ‘package’: cnblogs: : (打包后的jar文件名,相当于.net中项目最后生成的程序集dll名称)
Confirm properties configuration:
groupId: cnblogs
artifactId: maven-hello-world
version: 1.0-SNAPSHOT
package: cnblogs
Y: : (直接回车确认)
[INFO] —————————————————————————-
[INFO] Using following parameters for creating project from Old (1.x) Archetype: maven-archetype-quickstart:1.1
[INFO] —————————————————————————-
[INFO] Parameter: groupId, Value: cnblogs
[INFO] Parameter: packageName, Value: cnblogs
[INFO] Parameter: package, Value: cnblogs
[INFO] Parameter: artifactId, Value: maven-hello-world

[INFO] ————————————————————————
[INFO] BUILD SUCCESS (看到这个,表示项目创建成功!)
[INFO] ————————————————————————

(2)maven项目的目录结构
C:\test\maven-hello-world
├───src
│ ├───main
│ │ └───java
│ │ └───cnblogs
│ └───test
│ └───java
│ └───cnblogs
└───target(最开始可能没有,进行过一次编译后就会有了)
└───classes
└───cnblogs

注意上面带红色的目录名,maven项目采用“约定优于配置”的原则,src/main/java约定用于存放源代码,src/main/test用于存放单元测试代码,src/target用于存放编译、打包后的输出文件。这是全世界maven项目的通用约定,请记住这些固定的目录结构。

6.编译项目:
先进入刚才创建项目的根目录

cd /d c:\test\maven-hello-world

然后执行 mvn clean compile

这样就能对项目进行编译了,编译后会自动在target目录中生成class文件,如果编译成功,会输出类似下面的信息

yangjunmingmatoMacBook-Pro-7:maven-hello-world jimmy$ mvn clean compile
[INFO] Scanning for projects…
[INFO]
[INFO] ————————————————————————
[INFO] Building maven-hello-world 1.0-SNAPSHOT
[INFO] ————————————————————————
[INFO]
[INFO] — maven-clean-plugin:2.5:clean (default-clean) @ maven-hello-world —
[INFO]
[INFO] — maven-resources-plugin:2.6:resources (default-resources) @ maven-hello-world —
[INFO] Using ‘UTF-8’ encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /Users/jimmy/Desktop/study/maven-hello-world/src/main/resources
[INFO]
[INFO] — maven-compiler-plugin:2.5.1:compile (default-compile) @ maven-hello-world —
[INFO] Compiling 1 source file to /Users/jimmy/Desktop/study/maven-hello-world/target/classes
[INFO] ————————————————————————
[INFO] BUILD SUCCESS
[INFO] ————————————————————————
[INFO] Total time: 1.515s
[INFO] Finished at: Wed Jan 01 19:08:32 CST 2014
[INFO] Final Memory: 10M/156M
[INFO] ————————————————————————

7.单元测试:
mvn clean test

这样就能做单元测试了,so easy !

如果单元测试不通过,会提示出错信息,注意看输出。

注:从输出上可以发现,test前,会先执行compile,即先编译,再执行单元测试.

有兴趣的朋友,可以修改下/src/test/java/cnblogs/AppTest.java里的内容,把testApp()方法中的assertTrue( true );改成assertTrue( false );再跑下单元测试,看下有什么不同

8.项目打包:
通常我们会把java项目打包成jar包或war包,maven中打包的命令为

mvn clean package

运行完后,会在target目录下生成jar包

注:从输出 可以发现,package前,会先执行compile,再执行test,最后才是package打包

9.项目运行:
该项目中的App.java中有main方法,可以直接运行,常规方式下,我们如果想直接运行class文件,得敲一段很长的命令,maven中不必这么复杂,先用记事本打开项目根目录.m2下的pom.xml文件,增加下面这节内容:

1     <build> 2         <finalName>${project.artifactId}</finalName> 3         <plugins> 4             <plugin> 5                 <groupId>org.codehaus.mojo</groupId> 6                 <artifactId>exec-maven-plugin</artifactId> 7                 <version>1.2.1</version> 8                 <executions> 9                     <execution>10                         <goals>11                             <goal>exec</goal>12                         </goals>13                     </execution>14                 </executions>15                 <configuration>16                     <executable>java</executable>          17                     <arguments>                       18                         <argument>-classpath</argument>19                         <classpath>20                         </classpath>21                         <argument>cnblogs.App</argument>22                     </arguments>23                 </configuration>24             </plugin>25         </plugins>26     </build>

上述这段内容插入在之前即可。

然后在命令行下,输入

mvn exec:exec

即可直接运行,下面是输出:

C:\test\maven-hello-world>mvn exec:exec
[INFO] Scanning for projects…
[INFO]
[INFO] ————————————————————————
[INFO] Building maven-hello-world 1.0-SNAPSHOT
[INFO] ————————————————————————
[INFO]
[INFO] — exec-maven-plugin:1.2.1:exec (default-cli) @ maven-hello-world —
Hello World!
[INFO] ————————————————————————
[INFO] BUILD SUCCESS
[INFO] ————————————————————————
[INFO] Total time: 1.175s
[INFO] Finished at: Mon Jan 13 22:35:02 CST 2014
[INFO] Final Memory: 6M/111M
[INFO] ————————————————————————

10.项目部署

如果是web项目,使用命令

mvn clean jboss-as:deploy

就能自动将web项目部署到jboss中(前提是jboss web server已经成功启动),因为刚才我们创建的是一个最基本的maven项目,并非web项目,所以执行这条命令,应该会失败,后面会讲如何在eclipse中用插件部署web项目,这里可以先跳过。

另外:

有时候,我们的项目是一个类库,只是封装一些方法供其它项目引用,对于这种项目,我们可以用 mvn clean install 把生成的jar包,安装到“本地仓库”中,这样本机其它项目需要使用该jar包时,只要在pom里配置依赖项即可,不用把jar包复制到当前项目中。

11.eclipse中maven插件的安装和配置:
这里有两种安装方式:在线安装和link方式,这里推荐link方式:
(1)在你的 eclipse 安装的根目录下创建两个文件夹:links,myplugins(文件夹名称可自定义),把eclipse-maven3-plugin.7z(自行下载)解压后的features和plugins文件夹放到myplugins文件夹下(必须如此,注意解压后文件夹的嵌套情况)。
注意:下载eclipse-maven3-plugin.7z解压后的目录应该是这样的:
D:\eclipse\myplugins\maven\features
D:\eclipse\myplugins\maven\plugins
(2)在 links 目录下创建一个maven.link(文件名称可自定义)文件,打开并输入:path=myplugins
文件夹绝对路径(需要注意文件夹路径中是”/”或者”\” 而不是”\” )。
这里是:path=D:/eclipse/myplugins/maven
(3)重启 eclipse,启动后你打开Window —> Preferences 会发现一个多了一个选项Maven,说明安
装成功了。
或者:
直接粗暴的方式:
将解压后的子文件夹features和plugins的jar包文件分别导入Eclipse安装目录下的features和plugins文件夹内,然后重启Eclipse就可以在Preferences中看到Maven选项了。即Maven插件配置成功。

12.修改eclipse中使用的maven版本:
eclipse自带了maven3.0.4,如果想使用自己安装的最新的3.3.3,可以在eclipse -> window -> perferences -> Maven里参考下图设置一下:
这里写图片描述
这里写图片描述
修改 Maven 的本地仓库地址:
这里写图片描述

13.使用 Eclipse 创建 Maven 项目:
这里写图片描述
这里写图片描述
注:archetype 类似项目模板一样,每个模板的意思自己可以去查询。
这里写图片描述
Group Id 一般采用 com.公司域名 的形式,Artifact Id 一般采用领域范伟的名字,加上版本号,他们三个是依赖管理的最小单元。

14.eclipse中使用maven插件的时候,运行run as maven build的时候报错:

-Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable and mvn script match.

解决办法:
可以设一个环境变量MAVEN_HOME指向你的maven安装目录
MAVEN_HOME=D:\apache-maven-3.3.3
然后在Window->Preference->Java->Installed JREs->Edit
在Default VM arguments中设置
-Dmaven.multiModuleProjectDirectory=$MAVEN_HOME

参考文章:
1.http://fxb4632242.iteye.com/blog/2193945
2.http://www.cnblogs.com/happyframework/p/3391691.html
3.http://www.cnblogs.com/yjmyzz/p/3495762.html

0 0
原创粉丝点击