Maven with IntelliJ IDEA (轉)


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,項目對象模型)定義了項目的基本信息,用於描述項目如何構建,聲明項目依賴,等等。

我們打開這個文件看看,

 

[html]  view plain copy
 
  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文件

創建好的類代碼如下

 

 

[java]  view plain copy
 
  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文件如下

 

 

[html]  view plain copy
 
  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任務,現在為定義項目資源,所以暫時略過,最后執行編譯任務!

 

 

 

從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
[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都回給出智能的提示,非常方便。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM