maven環境快速搭建
最近,開發中要用到maven,所以對maven進行了簡單的學習。因為有個maven高手在身邊,所以,很快就上手了,我這里算是自我總結吧。關于maven是什么東東,請參考其它文章。
----------------準備工作-------------
Jdk 1.5以上java開發環境。
Eclipse IDE 一個。
Maven 3.0.3下載地址: http://maven.apache.org/docs/3.0.3/release-notes.html
----//快速搭建步驟
第一步:配置maven環境
將下載文件解壓,然后設置maven環境
如果你配置過jdk的話,這里對你應該不難。如我的maven環境為:F:\maven\apache-maven-3.0.3
我的電腦-----屬性----高級-----環境變量-----環境變量-----新建
變量名:M2_HOME
變量值:F:\maven\apache-maven-3.0.3
找到path
在環境變量值尾部加入:;%M2_HOME%\bin;---前面注意分號
當然,你也可以直接在path 路徑下加入:;F:\maven\apache-maven-3.0.3\bin 只是上面的方式更優雅一點。
我新建立
打開命令提示符(開始---運行---cmd),檢查我們的java環境和maven環境是否有誤。
第二步:修改倉庫位置
修改我們倉庫地址,倉庫用于存放我們項目所依賴的所有jar包。
我的倉庫路徑:F:\maven\repo----這個路徑是我自己創建,你可以將路徑創建在任何位置。
我們打開…\apache-maven-3.0.3\conf\目錄下的setting.xml文件,設置成我們創建的倉庫路徑
下面我們用一個命令驗證一下。打開命令提示符,輸入:mvn help:system
該命令會打印出所有的java系統屬性和環境變量。這些信息對我們日常的編程工作很有幫且。
如果運行的過程中沒有錯誤,打開我們倉庫(F:\maven\repo)會發現里面多了一些文件。這些文件就是我們從maven的中央倉庫下載到本地倉庫的。
第三步:創建maven項目
創建一個我們自己的項目。
我們通過maven命令行方式創建一個項目
mvn archetype:create -DgroupId=com.chongshi.test -DartifactId=hello -DpackageName=com.chongshi.test -Dversion=1.0
因為是第一次構建項目,所有依賴的jar包都要從maven的中央倉庫下載,所以需要時間等待。等以后我們的本地倉庫中積累了我們常用的jar包后,我們的開發將變得非常規范和方便。^_^!!
借助下載jar包的時間,我們來了解一下pom.xml文件。
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.chongshi.test</groupId>
<artifactId>hello</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<name>hello</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Ø project:pom.xml文件中的頂層元素;
Ø modelVersion:指明POM使用的對象模型的版本。這個值很少改動。
Ø groupId:指明創建項目的組織或者小組的唯一標識。GroupId是項目的關鍵標識,典型的,此標識以組織的完全限定名來定義。比如,org.apache.maven.plugins是所有Maven插件項目指定的groupId。
Ø artifactId: 指明此項目產生的主要產品的基本名稱。項目的主要產品通常為一個JAR文件。第二,象源代碼包通常使用artifactId作為最后名稱的一部分。典型的 產品名稱使用這個格式: <artifactId>- <version>. <extension>(比 如:myapp-1.0.jar)。
Ø version:項目產品的版本號。Maven幫助你管理版本,可以經??吹絊NAPSHOT這個版本,表明項目處于開發階段。
Ø name:項目的顯示名稱,通常用于maven產生的文檔中。
Ø url:指定項目站點,通常用于maven產生的文檔中。
Ø description:描述此項目,通常用于maven產生的文檔中。
對于一個項目中只有下面的一部分是是我們需要關注的:
<groupId>com.chongshi.test</groupId>
<artifactId>hello</artifactId>
<version>1.0</version>
第四步:編譯項目代碼
我們的項目已經創建完成。但我們點開目錄發現,它并不是我們eclipse所需要的項目目錄格式。我們需要把它構建成我們eclipse可以導入的項目。
在命令提示符下進入到我們的創建的項目目錄(F:\maven\hello)下,執行:mvn clean compile
Clean 告訴maven清理輸入出目錄target/,compile告訴maven編譯項目主代碼。
不要急,我們又需要一段時間來下載,相關jar包。^_^!第一次用maven要學會淡定。
項目是編譯完了,但項目的目錄結構還不是我們想要的eclipse的項目結構,是不能導入到eclipse中的。所以,還需要執行一個命令:mvn eclipse:eclipse
命令執行完成后就得我們需要的項目目錄了。
第五步:導入eclipse工具
打開的我們的eclipse工具。
先配置maven倉庫路徑
Window----Perferences-----java-----Build Path-----Classpath Variables
New一個變量的類路徑。
Name :M2_REPO 注意這個名字必須要大寫。
Path :F:/maven/repo 點擊“Folder…”找到有本地倉庫的位置。
下面,可以導入我的hello項目了。Eclipse如何導入項目,我這里就不說了,如果你是個java開發人員的話。
第六步:包的更新與下載
打開項目發現我們junit 是3.8.1的,有點老了。那我想換成4.7的,如何通過maven的方式更換呢。其實,很簡單,打開我們項目下的的pom.xml文件。
……
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
……
更改變,junit的版本號,然后重新執行:mvn eclipse:eclipse
Maven 中央倉庫地址:http://search.maven.org
假如,我們想下載一個struts 的jar包。在搜索框內搜索strruts ,會要列出中央倉庫中的所有struts版本。
列表的格式與我們pom.xml配置文件的格式是對應的。
我們在pom.xml中加入:
<groupId>stuts</groupId>
<artifactId>struts-scription</artifactId>
<version>1.0.1</version>
然后更新項目就可從中央倉庫下載我們想要的任意jar包(必須是開源的包)
繼續學習內容:
1. 如何創建一個web項目?
如果想讓maven應用到項目開發中,這個是必須的。
2. 如何使用jeety?
maven提供的一個容器,類似于tomcat
3. 如何創建一個代理倉庫?
以前介紹過一個搭建私服的簡樸但很笨的辦法--將雷鋒同志下載好的.m2/repository目錄整個上傳到任意的Web服務器中。其實世上多的是專業的maven私服搭建器,見TheServiceSide的文章--Setting Up a Maven Repository。
我用的是Artifactory,忽然間覺得,Java的服務應用啥時候終于變得這么好用了,什么都不用裝,不用配,雙擊artifactory.bat,自己就會啟動Jetty Web服務器,典型的拆箱即用。
10分鐘入門到開動
- 雙擊artifactory.bat,啟動默認配置的Artifactory服務。
- http://localhost:8081/artifactory/,用admin/password登錄進管理界面看看。
- 修改自己項目的pom.xml,增加私服定義
<repositories>
<repository>
<id>artifactory</id>
<name>your local artifactory</name>
<url>http://localhost:8081/artifactory/repo</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>artifactory</id>
<name>your local artifactory</name>
<url>http://localhost:8081/artifactory/plugins-releases</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories> - 正常運行項目的maven命令,向artifactory索求jar。如果artifactory已經下載了就會直接返回給你,還沒有的 就會去那幾個repo官方站下載。進入到artifactory的管理界面,不斷刷新Browse the repository,會看到倉庫不斷豐富的情況。
另外,官網服務器上還沒有的一些jar,也可以通過管理界面很方便的deploy到Artifactory中。
最后你團隊里的artifactory服務器不能直接連外網,需要使用HTTP代理服務器的話,見http://www.jfrog.org/sites/artifactory/latest/configuration.html
建議那些愿意為開源作實事的站點,在帶寬充裕的服務器上,用Artifactory搭一個jar倉庫吧,SpringSide就可以直接連上去下載jar了:)
如果是團隊開發,這個很有必要,我們不可能每次都到中央倉庫拿包,那樣很慢,如果開發人員A已經下了某包,開發人員B還要下;創建代理倉庫,A第一次下的包會存入代理倉庫中,B要用時直接從代理倉庫取就行。
本文更新一個命令。
第一節中提示創建一個項目用archetype:create create是個被廢棄或不被推薦使用的插件,在以后創建項目中請盡量使用archetype:generate
創建一個項目,如下:
mvn archetype:generate -DgroupId=com.chongshi.test -DartifactId=hello
-DpackageName=com.chongshi.test -Dversion=1.0
第一節拋出了三個問題,本文將解決前兩個
1. 如何創建一個web項目
2. 如何使用jettey容器運行
如果對maven的基本配置不了解的,請先閱讀第一篇文章:
http://www.cnblogs.com/fnng/archive/2011/12/02/2272610.html
-----//創建一個文本項目
1. 如何創建一個web項目。
其實非常簡單,只是比普通項目多加一個參數DarchetypeArtifactId ,命令如下:
mvn archetype:generate -DgroupId=com.chongshi.test -DartifactId=mywebapps -DarchetypeArtifactId=maven-archetype-webapp -Dversion=1.0
定位到創建項目的目錄下構建成eclipse項目:
F:\mywebapp>mvn eclipse:eclipse
通過maven構建后就是我們eclipse所需要的項目目錄如下。
由于本文不是講解struts2項目的創建與配置,所以就不寫struts2的配置過程,但為了不影響后面內容的講解,所以這里提供一個基于struts2的web項目
例子介紹:http://www.mkyong.com/struts2/struts-2-hello-world-example/
項目源碼下載:
http://www.mkyong.com/wp-content/uploads/2010/08/Struts2-Hello-World-Example.zip
我解壓到了本地D盤根目錄下,由于已經是maven 的項目格式了,所以不需要對該項目運行mvn eclipse:eclipse命令進行構建。直接導入到eclipse工具中。項目目錄結構如下:
----//如何使用Jetty容器
2. 如何使用jetty容器運行項目。
使用添加jetty 運行項目。
Jetty和tomcat一樣也屬于web容器。Jetty做maven中做為一個插件。我們要在pom.xml中添加jetty的插件,才能調用jetty。
在<project>…</project>標簽之間,插入如下信息:
<build>
<finalName>Struts2Example</finalName>
<plugins>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.10</version>
<configuration>
<scanIntervalSeconds>10</scanIntervalSeconds>
<stopKey>foo</stopKey>
<stopPort>9999</stopPort>
</configuration>
<executions>
<execution>
<id>start-jetty</id>
<phase>pre-integration-test</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<scanIntervalSeconds>0</scanIntervalSeconds>
<daemon>true</daemon>
</configuration>
</execution>
<execution>
<id>stop-jetty</id>
<phase>post-integration-test</phase>
<goals>
<goal>stop</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
在項目目錄下執行mvn jetty:jetty
D:\java\Administrator\workspace3\Struts2Example>mvn jetty:jetty
在慢長的等待插件下載過程中(公司網速不給力),我上了一次廁所、倒了一次水。在群里和朋友亂侃了一通。^_^!!
等插件下載完成后就可以運行jetty了,運行命令:mvn jetty:run
這時就可以在瀏覽器中訪問我們的jsp頁面了。
重啟Jetty,按鍵盤ctrl+c 根據提示按 y