Maven with IntelliJ IDEA 学习笔记

Maven ,知道这个东西已经很久了,也经常听别人提起,也知道是用来管理项目的,但从来都没有真正去用过,最近学习很多开源的项目中,发现很多都改为使用maven来管理代码,于是,终于决定好好的研究下这个久闻大名的工具!


----    Maven 


Maven是什么?

Maven是Apache下的一个开源的”项目管理工具“,它可以用来构建,打包,发布.....你的项目,废话也不多说了,要了解详请可参考《Maven实战》,或者《Maven权威指南》

Maven安装

到http://maven.apache.org/download.html 下载最新的Maven版本,我下载的版本为最新的apache-maven-3.0.4。推荐使用最新的Maven 3,因为比以前的Maven 2性能更好,而且完全兼容Maven 2

下载好以后,解压到一个目录,我的目录为 D:\apache-maven-3.0.4,接着配置Maven环境变量M2_HOME为你解压的目录,如下图新建M2_HOME变量并追加到Path后面



如果要在CMD控制台运行Maven命令的话,还需要配置Jdk环境变量,因为我接下来的操作都是基于IntelliJ IDEA,所以我不用配置jdk环境变量,我在公司电脑上连Maven环境变量也不用配置,只需要在IDEA里面指定Maven的目录即可,但笔记本上不知道为什么必须默认使用M2_HOME这个环境变量

Maven使用

打开IntelliJ IDEA,新建一个Maven项目,如下图,项目名称为HelloMaven

创建好后的目录结构如下图,IDEA自动为我们创建了src/main/java、src/test/java、以及pom.xml文件


按照Maven约定,项目的主目录位于/src/main/java中,测试目录位于src/test/java中,所以我们在最终打包项目的时候,只包含主目录代码,不会包含测试目录里的代码,而测试目录里的代码只会在测试时候用到。

最后pom.xml这个文件是我们Maven项目的核心文件,POM(Project Object Model,项目对象模型)定义了项目的基本信息,用于描述项目如何构建,声明项目依赖,等等。

我们打开这个文件看看,

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"  
  3.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  5.     <modelVersion>4.0.0</modelVersion>  
  6.     <groupId>HelloMaven</groupId>  
  7.     <artifactId>HelloMaven</artifactId>  
  8.     <version>1.0</version>  
  9. </project>  

project是xml文件的根元素,我们主要关心根元素下的子元素
modelVersion定义了当前POM模型的版本,Maven 2 或Maven 3 只能是4.0.0
griupId定义了项目属于哪个组,一般来说这个网网和公司或组织关联,比如说,你所在的公司为mycom.那就应该定义为com.mycom.hellomaven,hellomaven为项目名称
artifactId定义了当前Maven项目在组中的唯一id,例如HelloMaven这个项目,我则把他定义为hello-maven,还例如spring项目,他的groupId为org.springframework,对于content项目来说artifactId则为spring-content,web项目则为spring-web
接下来我们按照上面的约定在主目录里创建com/mycom/hellomaven/HelloMaven类,并修改pom.xml文件

创建好的类代码如下

  1. package com.mycom.hellomaven;  
  2.   
  3. public class HelloMaven {  
  4.   
  5.     public String helloMaven() {  
  6.         return "helloMaven";  
  7.     }  
  8.   
  9.     public static void main(String[] args) {  
  10.         HelloMaven helloMaven = new HelloMaven();  
  11.         System.out.println(helloMaven.helloMaven());  
  12.     }  
  13. }  


修改后的pom.xml文件如下
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"  
  3.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  5.     <modelVersion>4.0.0</modelVersion>  
  6.   
  7.     <groupId>com.mycom.hellomaven</groupId>  
  8.     <artifactId>hello-maven</artifactId>  
  9.     <version>1.0</version>  
  10.   
  11. </project>  

最后我们使用IntelliJ IDEA来用Maven编译我们的代码,打开Maven Projects菜单,如图,选中clean、compile并右键点击Run 'hello-maven[clean,compile]'按钮即可


控制台输入结果如下

[plain] view plain copy
  1. D:\resources\opensource\jdk1.6.0_31\bin\java -Dclassworlds.conf=D:\apache-maven-3.0.4\bin\m2.conf -Dmaven.home=D:\apache-maven-3.0.4 -Didea.launcher.port=7533 "-Didea.launcher.bin.path=D:\IntelliJ IDEA 11.1\bin" -Dfile.encoding=UTF-8 -classpath "D:\apache-maven-3.0.4\boot\plexus-classworlds-2.4.jar;D:\IntelliJ IDEA 11.1\lib\idea_rt.jar" com.intellij.rt.execution.application.AppMain org.codehaus.classworlds.Launcher --no-plugin-registry --fail-fast --no-plugin-updates --strict-checksums --update-snapshots -f D:\projects\HelloMaven\pom.xml clean compile  
  2. [WARNING] Command line option -npu is deprecated and will be removed in future Maven versions.  
  3. [WARNING] Command line option -npr is deprecated and will be removed in future Maven versions.  
  4. [INFO] Scanning for projects...  
  5. [INFO]                                                                           
  6. [INFO] ------------------------------------------------------------------------  
  7. [INFO] Building hello-maven 1.0  
  8. [INFO] ------------------------------------------------------------------------  
  9. [INFO]   
  10. [INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ hello-maven ---  
  11. [INFO] Deleting D:\projects\HelloMaven\target  
  12. [INFO]   
  13. [INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ hello-maven ---  
  14. [debug] execute contextualize  
  15. [WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!  
  16. [INFO] skip non existing resourceDirectory D:\projects\HelloMaven\src\main\resources  
  17. [INFO]   
  18. [INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ hello-maven ---  
  19. [WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!  
  20. [INFO] Compiling 1 source file to D:\projects\HelloMaven\target\classes  
  21. [INFO] ------------------------------------------------------------------------  
  22. [INFO] BUILD SUCCESS  
  23. [INFO] ------------------------------------------------------------------------  
  24. [INFO] Total time: 2.018s  
  25. [INFO] Finished at: Wed Apr 18 23:10:47 CST 2012  
  26. [INFO] Final Memory: 5M/15M  
  27. [INFO] ------------------------------------------------------------------------  
  28.   
  29.   
  30. Process finished with exit code 0  

根据输出结果我们看到,clean命令让Maven先清理target目录,Maven一般认为项目的输出目录为target,然后执行resource任务,现在为定义项目资源,所以暂时略过,最后执行编译任务!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值