Maven with IntelliJ IDEA

来源:互联网 发布:mysql 创建触发器 编辑:程序博客网 时间:2024/05/21 09:25

refs:

http://www.cnblogs.com/y-lucia/articles/3176481.html


Maven安装

到http://maven.apache.org/download.html 下载最新的Maven版本,


下载好以后,解压到一个目录,我的目录为 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]'按钮即可

 

控制台输入结果如下

 

  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任务,现在为定义项目资源,所以暂时略过,最后执行编译任务!

 

 

 

从Archetype创建Maven项目

由于上一篇文件太过久远,本人的系统也已经从上一篇中的Windows 7 换成Windows 8,IntelliJ IDEA 也已经从11换成了 IntelliJ IDEA 12,因此可能有些界面和结构可能不太一样。

进入主题,Archetype是什么呢,中文翻译是原型的意思,顾名思义,有了Archetype我们就可以利用它快速的生成项目的骨架,当然是符合Maven规范的骨架。

首先我们打开IntelliJ IDEA 然后新建一个项目(New Project),选择Maven Module,然后输入项目名称mavenDemo,如下图

新建Maven项目

填好项目名称后点击下一步(Next),勾选 Create from Archetype选项,既可选择列表中提供的Archetype来创建项目

我认为多数情况下上图提供能的列表中都没有提供我们想要的Archetype,这时我们可以选择Add archetype选项来添加其他的Archetype项目

这里我选择maven-archetype-quick这个Archetype来构建项目的骨架,然后下一步(Next),我们可以在这里设置我们项目的groupId,artifactId等信息,然后点击完成(Finish)

 然后IntelliJ IDEA就会根据我们提供的信息调用Archetype插件为我们创建项目的基础骨架

 

控制台输出的结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
D:\code\Java\jdk1.6.0_10\bin\java -Dmaven.home=D:\code\Tools\apache-maven-3.0.5 -Dclassworlds.conf=D:\code\Tools\apache-maven-3.0.5\bin\m2.conf -Dfile.encoding=UTF-8 -classpath D:\code\Tools\apache-maven-3.0.5\boot\plexus-classworlds-2.4.jar org.codehaus.classworlds.Launcher --fail-fast --strict-checksums -DinteractiveMode=false -DgroupId=mavenDemo -DartifactId=mavenDemo -Dversion=1.0-SNAPSHOT -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=RELEASE org.apache.maven.plugins:maven-archetype-plugin:RELEASE:generate
[INFO] Scanning for projects...
[INFO]                                                                        
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] >>> maven-archetype-plugin:2.2:generate (default-cli) @ standalone-pom >>>
[INFO]
[INFO] <<< maven-archetype-plugin:2.2:generate (default-cli) @ standalone-pom <<<
[INFO]
[INFO] --- maven-archetype-plugin:2.2:generate (default-cli) @ standalone-pom ---
[INFO] Generating project in Batch mode
[INFO] Archetype repository missing. Using the one from [org.apache.maven.archetypes:maven-archetype-quickstart:1.1] found in catalog remote
Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/archetypes/maven-archetype-quickstart/maven-metadata.xml
Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/archetypes/maven-archetype-quickstart/maven-metadata.xml (531 B at 0.7 KB/sec)
Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/archetypes/maven-archetype-quickstart/1.1/maven-archetype-quickstart-1.1.jar
Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/archetypes/maven-archetype-quickstart/1.1/maven-archetype-quickstart-1.1.jar (7 KB at 13.7 KB/sec)
Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/archetypes/maven-archetype-quickstart/1.1/maven-archetype-quickstart-1.1.pom
Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/archetypes/maven-archetype-quickstart/1.1/maven-archetype-quickstart-1.1.pom (2 KB at 4.3 KB/sec)
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Old (1.x) Archetype: maven-archetype-quickstart:RELEASE
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: mavenDemo
[INFO] Parameter: packageName, Value: mavenDemo
[INFO] Parameter: package, Value: mavenDemo
[INFO] Parameter: artifactId, Value: mavenDemo
[INFO] Parameter: basedir, Value: C:\Users\yang\AppData\Local\Temp\archetype4249856445508268879tmp
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] project created from Old (1.x) Archetype in dir: C:\Users\yang\AppData\Local\Temp\archetype4249856445508268879tmp\mavenDemo
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 9.929s
[INFO] Finished at: Wed May 22 13:53:49 CST 2013
[INFO] Final Memory: 5M/10M
[INFO] ------------------------------------------------------------------------
[INFO] Maven execution finished

 

创建完成后的结构如下,自动为我们创建了项目骨架还提供了App和AppTest测试类



到目前为止,我们已经学会了通过IntelliJ IDEA创建普通Maven项目和Archetype项目,各位可以多找一些Archetype来试试,maven-archetype-quickstart只是一个最简单的例子,没多大的实用价值,当我们需要使用某一框架来构建我们的项目时候,如果恰好也提供了Archetype的话,对我们来说是很有用的,甚至可做到即开即用。

 

 

 

 

 

导入Maven项目

在IntelliJ中导入本地的Maven项目有两种方式:

Open Project

如果我们选择这种方式导入,在弹出的对话框中选择项目对应的pom文件即可,如果项目中包含多个模块,要导入其中的一个模块,选择模块对应的pom文件即可,选择好后IntelliJ会自动解析出项目的结构,分析依赖等等

Import Project

如果选择这种方式导入,与Open Project方式类似,唯一的区别是,你选择了对应的pom文件后,会有一系列的设置,比如设置项目名称,项目路径,还有一些Maven对应的参数等等。如下图

 

 如果我们的项目在版本控制工具中,如svn,那怎么导入呢,目前笔者没找到提供有从SCM导人的方式,直接从svn检出项目即可,因为如果项目有pom文件IntelliJ会自动解析的,其实和SCM导入差不多,我认为这样更加方便,因为如果你导出的项目有maven文件就会加入maven 模块,如果有spring文件,就会加入spring模块,相当方便。

 

执行Maven命令

IntelliJ最右侧的Maven projects 标签中对每个项目都内置很多常用的一些Maven命令,如下图

 

如果我们想通过IntelliJ在项目中执行Maven命令该怎么办呢?最简单的方式就是选中一个内置的命令,然后右键选择Create'xxx[xxx]'... ,然后接先来在Command line中输入你想要执行的命令,点击Ok即可保存。

 

紧接着工具栏中会出现你刚才保存的那条命令,然后选择旁边的运行或调试按钮即可执行刚才保存的命令。

 

当然你也可以修改,点击那条命令,然后选择Edit Configurations即可。

 

依赖管理

如果我们要查看项目中依赖了哪些第三方jar包,在Maven projects中的Dependencies下可以很清楚的看到,还可以右键Dependencies显示依赖关系图,很是方便

 

 

如果要添加新的依赖也很简单,开打Project Structure - Libraries,然后选择加号From Maven,在弹出的对话框中输入你要添加的依赖的关键字,比如spring,最后点击放大镜搜索。

 

等一会儿下拉列表中就会列出相关的搜索到的相关信息。。最后下面还有两个选项选择是否下载源文件和javadoc。

 

这种方式唯一不好的地方就是会把jar文件下到项目的Lib中去,如果不想下载到Lib中,只有手动在pom文件中添加依赖信息,不管你是添加groupId,还是artifactId等,IntelliJ都回给出智能的提示,非常方便。


0 0
原创粉丝点击