以前就聽過maven,但一直沒具體接觸,最近聽一個同學推薦這工具功能蠻強大的。本着好奇之心,這週末就嘗試了maven的工具使用,意外的是還是遇到了不少問題,在此做一個簡單的總結。
一、下載與安裝
download:官網網址如下
http://maven.apache.org/download.cgi
安裝
maven下載後解壓即可,沒有.exe安裝文件,之後進行一下配置
step1:根據maven版本要安裝相應版本的jdk,maven3.3版本則需要至少1.7(包括)以上版本的jdk,具體請見官網,並且要配置jdk的環境變量,JAVA_HOME在環境變量中是一定要配置的
step2:在環境變量中設置maven_home(maven的安裝目錄),並且將%maven_home%\bin添加到path的環境變量中 上述配置完成後,打開dos命令行 輸入mvn -v即可查看maven的相關版本信息,證明基本配置ok,如java_home沒設置,此時會提示在環境變量中需設置java_home變量值
step3:可以設置maven下載jar到本地目錄的位置,默認是${user.home}/.m2/repository,可以在%maven_home%\conf\setting.xml中更改重新指定,將如下標籤:<localRepository>G:/workspace/maven_repository</localRepository> 放到根標籤settings下即可
二、用maven編譯與測試java源文件
安裝配置maven後即可通過maven的一些命令來爲我們編譯,測試 java程序。
setp1:建立指定格式的文件結構(最重要,最重要,最重要的一步,重要的事情說三遍),如下:
path(執行mvn命令目錄)\src\main\java\...\XXX.java
path(執行mvn命令目錄)\src\test\java\...\XXXTest.java
path(執行mvn命令目錄)\pom.xml
說明:path指的是某個盤下的某個目錄,比如G:\maven_workspace_demo,也等同於 執行命令目錄
step2:配置pom.xml,最基本的配置信息如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.kingdee.maven</groupId>
<artifactId>maven_welcome</artifactId>
<version>1.0.0</version>
<properties>
<project.build.sourceEncoding>
UTF-8
</project.build.sourceEncoding>
</properties>
</project>
step3:在dos中通過命令cd進入path目錄下進行編譯,命令如下 mvn compile
注意:是進入path目錄下,即與src,pom.xml同級的目錄下執行 mvn compile命令 編譯 執行命令目錄\src\main\java\包名\java源文件
如果執行該命令的目錄下沒有pom.xml文件則會提示該文件找不到;
如果該執行目錄有pom.xml,但是java源文件是如下格式放的 執行命令目錄\包名\java源文件,那麼此時會提示 \src\main\resources 下沒有資源,此時也不會在pom.xml同級目錄下生成target\classes文件夾;
如果執行目錄有pom.xml,但java源文件是如下格式放的 執行命令目錄\src\main\resources\包名\源文件,那麼此時在pom.xml同級目錄下會生成target\classes的文件夾,但此時只是將源文件夾裏的內容拷貝到了 執行命令目錄\target\classes\包名\java源文件,此時java源文件並沒有編譯成.class文件
有且僅有按如下格式放java源文件 執行命令目錄下\src\main\java\包路徑\java源文件,纔會將java源文件編譯成.class文件,生成的.class文件路徑如下 執行命令目錄\target\classes\包名\.class文件,此時 執行命令目錄\src\test\java\包名\測試類java源文件 並沒有被編譯
step4:寫一個類測試java源文件中的方法,該測試類中引用了junit4中的相關類,因此還需做如下配置
將測試類放到 執行命令目錄(src,pom.xml的同級目錄)\src\test\java\包名\測試類.java (\src\test\java\ 這是執行mvn test命令 編譯 測試類進行測試的固定結構格式)
在pom.xml中引用junit的jar,添加如下配置內容
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.4</version>
</dependency>
</dependencies>
進入path目錄下執行 mvn test 命令,則會編譯 測試類,並且執行裏面的@Test的方法,輸出測試類相關方法的測試結果。
注意:在執行mvn compile 或者 mvn test命令時,maven會根據pom.xml裏面配置信息去做一些事,比如在step4中,配置了junit4的依賴項,如果檢測到maven本地倉庫中沒有junit4 4.4版本的jar,則會先從maven的遠程倉庫中下載到本地來,在進行之後的操作。
三、配置依賴本地不同目錄下的java類
path1\src\main\java\包名\java源文件1
path1\pom1.xml
path2\src\main\java\包名\java源文件2
path2\pom2.xml
假如java源文件2中的類引用了java源文件1中的類,需要哪些步驟才能正常的編譯java源文件2呢?
step1:進入path1,是path1不是path2,執行mvn install命令,該命令會將path1 /src/main/java 下的java源文件編譯 ,並且會自動放到本地的respository中,所以不需要執行mvn compile 也可以
step2:編輯pom2.xml,將pom1.xml中定義的座標groupId,artifactId,version 組成dependency 放到pom2.xml 中的dependencies中
step3:通過dos命令進入path2,執行mvn compile 就可以正確編譯 java源文件2了,不會提示缺少類了