Maven簡介
Maven最初的目的是在Jakarta Turbine項目中使構建處理簡單化。幾個項目之間使用到的Ant build文件差異很小,各個JAR都存入CVS。因此希望有一個標準的方法構建各個工程,清晰的定義一個工程的組成,一個容易的方法去發布項目信息并且去提供一種在各個項目之間共享JAR包。
結果出現了一種功能能用于構建和管理任何基于java的工程。Maven小組希望他們已經做到了一些事情,這將有助于Java開發者更容易的完成每天的工作并且有助于理解任何基于java的項目。
Maven的目標是:
-
使構建過程更容易
-
提供統一構建系統
-
提供高質量的項目信息
-
提供開發的最佳實踐指南
-
能無縫的加入新的特性
對Maven的錯誤理解
-
Maven是一個站點和文檔制作工具。
-
Maven擴展了Ant,使其能下載到各種依賴包
-
Maven是一系列可重用的Ant腳本
Maven的版本。
Maven現在主要有Maven 1.x和Maven 2.x,其中現在最新版本是Maven 2.02。
Maven 2完成了對Maven 1的重寫。重寫的首要目的是要提供了強大的Jave構建和包含API的項目,允許Maven被植入任何地方,尤其是高級別的產品如IDEs、質量工具、報告工具等這些。Maven 2構建生命周期的概念正式化,其比Maven更易擴展。
因此現在我們主要研究的就是Maven 2。
Maven的安裝
-
Windows 2000/xp下的安裝
-
解壓縮maven-2.0.2-bin.zip到你希望安裝Maven 2.0.2的所在目錄。這里假設你選擇了C:\ProgramFiles\Apache Software Foundation\maven-2.0.2.
-
將C:\Program Files\Apache Software Foundation\maven-2.0.2\bin目錄加入到你的%path%環境變量中。
-
同時,確認JAVA_HOME是否正確設置成功。
-
運行 mvn --version 確認是否安裝成功。
-
顯示Maven version: 2.0.2 則表示安裝成功。
-
基于Unxi-based的操作系統(Linux,Solaris and Mac OS X)
-
解壓縮發布包到你希望安裝Maven 2.0.2的所在目錄。這里假設你選擇了/usr/local/maven-
-
將/usr/local/maven-2.0.2/bin目錄加入到你的path環境變量中,例如:PATH=/usr/local/maven-2.0.2y/bin: $PATH。
-
同時,確認JAVA_HOME是否正確設置成功。
-
運行 mvn --version 確認是否安裝成功。
-
顯示Maven version: 2.0.2 則表示安裝成功。
Maven主要功能列表
Maven是一種對項目的管理工具,它提供了一種方式來管理以下項目中涉及到的工作內容,同時以下也是Maven的主要功能:
-
構建項目(Builds)
-
文檔編制(Documentation)
-
報告(Reporting)
-
依賴管理(Dependencies)
-
配置管理(SCMs)
-
發布管理(Releases)
構建項目
-
首先創建一個Maven工程
Maven可用于構建java應用工程和java web應用工程。
-
WebApp
mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-webapp
-DarchetypeArtifactId=maven-archetype-webapp
my-webapp
|-- pom.xml
`-- src
`-- main
|-- webapp
| |-- WEB-INF
| | `-- web.xml
| `--index.jsp
`-- resources
其他的目錄則需要自己補充。
其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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-webapp</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>Maven Webapp Archetype</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>my-webapp</finalName>
</build>
</project>
-
App
mvn archetype:create -DgroupId=com.mycompany.ap -DartifactId=my-app
命令正確執行后,生成如下目錄:
my-app
|-- pom.xml
`-- src
|-- main
| `-- java
| `-- com
| `-- mycompany
| `-- app
| `-- App.java
`-- test
`-- java
`-- com
`-- mycompany
`-- app
`-- AppTest.java
其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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.ap</groupId>
<artifactId>my-app</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>Maven Quick Start Archetype</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
-
Maven項目的標準目錄介紹
Maven提倡使用一個共同的標準目錄結構,使開發人員能在熟悉了一個Maven工程后,對其他的Maven工程也能清晰了解。這樣做也省去了很多設置的麻煩。
以下的文檔介紹是Maven希望的目錄結構,并且也是目錄創建工程是采用的目錄結構。Maven推薦大家盡可能的遵守這樣的目錄結構。
src/main/java |
Application/Library sources |
src/main/resources |
Application/Library resources |
src/main/filters |
Resource filter files |
src/main/assembly |
Assembly descriptors |
src/main/config |
Configuration files |
src/main/webapps |
Web application sources |
src/test/java |
Test sources |
src/test/resources |
Test resources |
src/test/filters |
Test resource filter files |
src/site |
Site |
LICENSE.txt |
Project's license |
README.txt |
Project's readme |
在頂級目錄上是工程的描述文件pom.xml(如果使用Ant則還包括其他屬性文件,maven.xml或build.xml),另外還包括提供給最終用戶的文件,如,README.txt, LICENSE.txt等等。
頂級目錄還包括兩個子目錄:src,target。頂級目錄下可能出現的其他目錄僅僅是CVS或.svn和其他多模塊工程的工程目錄,最好不要再有其他目錄。
Target目錄是所有工程編譯構建的輸出目錄。
Src目錄包含所有工程的源碼文件,配置文件,資源文件等等。它下面的子目錄一般包含main(主要的工程源文件),test(測試文件),site(項目站點文件)。
-
項目構建的生命周期的介紹
Maven 2是圍繞著構建生命周期概念設計的。這意味著,構建或者發布的過程已經被清晰的定義了。
當我們使用Maven構建工程時,我們只需要了解幾個Maven定義好的命令即可,其他的工作則交給POM來完成。
以下給出Maven提供的構建生命周期列表:
validate |
validate the project is correct and all necessary information is available. |
generate-sources |
generate any source code for inclusion in compilation. |
process-sources |
process the source code, for example to filter any values. |
generate-resources |
generate resources for inclusion in the package. |
process-resources |
copy and process the resources into the destination directory, ready for packaging. |
compile |
compile the source code of the project. |
process-classes |
post-process the generated files from compilation, for example to do bytecode enhancement on Java classes. |
generate-test-sources |
generate any test source code for inclusion in compilation. |
process-test-sources |
process the test source code, for example to filter any values. |
generate-test-resources |
create resources for testing. |
process-test-resources |
copy and process the resources into the test destination directory. |
test-compile |
compile the test source code into the test destination directory |
test |
run tests using a suitable unit testing framework. These tests should not require the code be packaged or deployed. |
package |
take the compiled code and package it in its distributable format, such as a JAR. |
pre-integration-test |
perform actions required before integration tests are executed. This may involve things such as setting up the required environment. |
integration-test |
process and deploy the package if necessary into an environment where integration tests can be run. |
post-integration-test |
perform actions required after integration tests have been executed. This may including cleaning up the environment. |
verify |
run any checks to verify the package is valid and meets quality criteria. |
install |
install the package into the local repository, for use as a dependency in other projects locally. |
deploy |
done in an integration or release environment, copies the final package to the remote repository for sharing with other developers and projects. |
因此,當我們構建一個項目時,只需要了解自己希望做什么,然后執行以上對應的生命周期即可。
例如,我們希望編譯我們的工程。在命令行狀態下進入到工程的pom.xml文件所在的目錄中,使用命令:mvn compile;希望構建打包我們的工程,使用mvn package即可。
當然了,maven的構建生命周期也是可以擴展和自定義的,這里就先不做介紹了。
-
pom.xml的介紹
pom.xml包含了一個項目的項目對象模型(POM)。項目對象模型(POM)是Maven工作的基本單元。請記住,這個是非常重要的,因為POM包含了工程的非常重要的信息塊,并且基本上包含了和項目相關的任何要素。
讓我們熟悉一下pom.xml包含的基本項:
-
poject 這是pom.xml的頂級元素。
-
modelVersion 這是元素指出了這個POM使用的是那個版本的對象模型。這個模型的版本自身么是經常改變的,但這種改變是為了使模型更加的穩定。
-
groupId 這個元素指出創建這個工程的組織或團隊的唯一標識,并且這個也是一個項目的關鍵標識,推薦使用這個組織或團隊的完整域名。例如:org.apache.maven.plugins是為Maven plug-ins定義的groupId。
-
artifactId 這個元素指出這個工程的主要制品的基本名稱。一個工程的主要制品如果是jar文件,次要制品如果是源碼包,則次要制品的名稱的一部分也使用artifactId。典型的制品名稱使用這樣的格式:<artifactId>-<version>.<extension>(例如,myapp-1.0.jar)。
-
packaging 這個元素指出制品的類型(例如:JAR,WAR,EAR等等)。這個元素不僅僅指示出制品的類型,同時也指示出工程構建過程中的部分生命周期。Packaging的默認值是JAR。
-
version 這個元素指出這個項目產生的制品的版本號,Maven在幫助開發人員管理版本號時走了很長的路,以后你將經??吹?font face="Times New Roman, serif">SNAPSHOT在一個版本中,這個表示一個工程仍然在開發狀態。
-
name 這個元素指出這個工程顯示的名稱。這個常用于Maven產生的文檔中。
-
url 這個員算指出在哪里能發現工程的站點。這個常用于Maven產生的文檔中。
-
desription 這個元素提供了這個工程基本的描述。這個也常用于Maven產生的文檔中。
以上只是pom.xml中的一些基本項,完整的pom.xml的元素介紹請參考:
http://maven.apache.org/maven-model/maven.html
文檔編制
-
文檔創建:
對于如何創建和編制文檔,maven有一個簡單的示例命令:
mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-site |
執行了以上命令后,我們將得到這樣一個目錄結構:
my-app |-- pom.xml `-- src |-- site |-- apt | |-- format.apt | `-- index.apt |-- fml | `-- faq.fml |-- fr | |-- apt | | |-- format.apt | | `-- index.apt | |-- fml | | `-- faq.fml | `-- xdoc | `-- xdoc.xml |-- site.xml |-- site_fr.xml `-- xdoc `-- xdoc.xml |
你現在可以看到一個$basedir/src/site目錄,以及它包含的一些站點描述文件(site.xml,site_fr_xml),和各種maven支持的文檔格式相對應的目錄和示例文檔都已經產生。
以上的創建只是示例,我們自己創建時就沒有命令行使用了,只能按照上面的目錄結構創建我們需要的文檔,并在文檔中寫入我們工程的信息。
讓我們再來看看maven所支持的文檔格式。
-
文檔格式:
Maven支持3種文檔格式:
-
Xdoc format
這個是一種簡單快捷的,基于original Anakia format的文件格式。
-
APT format
“Almost Plain Text”,(接近普通文本格式),這是一種允許你采用接近普通文本格式的方式簡單的寫出類似于wiki格式的結構性文檔。
如果你對此很感興趣,請參考完整的APT format的書寫規范
http://maven.apache.org/guides/mini/guide-apt-format.html
-
FML formate
這個是一種FAQ結構形式的文檔格式。
了解了以上的文檔格式,我們就可以按照以上文檔格式的要求,選用我們喜歡的文檔格式編寫我們的文檔。當編寫完成后,我們需要生成所有文檔。這里生成文檔,maven的處理是生成站點(site),也就是身成html頁面,這樣所有對此項目感興趣的人員都可以通過訪問此站點來了解所有的信息。生成站點的命令是:
mvn site |
-
文檔國際化:
當然,你可能早就想到文檔國際化的問題,這里maven也早就處理了。在pom.xml中
<project> ... <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-site-plugin</artifactId> <configuration> <locales>en,fr</locales> </configuration> </plugin> </plugins> ... |
注意到<locales>en,fr</locales>了嗎?這里就支持了英語(en)和法語(fr)兩種語言的文檔。請注意以下生成的目錄,由于英語是在第一個,屬于默認語言,所以$basedir/src/site目錄下并沒有en的文件夾,而有fr的文件夾,而且這個文件夾里包含了maven支持的文檔格式相對應的目錄和示例文檔。
報告設置
Maven有多個報告能添加在你的文檔站點中,來顯示項目當前的狀態,這些報告采用插件的形式可在項目中配置。
為了為你的文檔站點增加這些報告,必須增加reporting部分在pom.xml中,下面這個為標準的項目信息報告插件在pom.xml中的配置。
<project> ... <reporting> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-project-info-reports-plugin</artifactId> </plugin> </plugins> </reporting> ... |
Maven在執行mvn site命令時,除了產生開發人員編制的文檔信息外,根據pom.xml中設置的報告,會同時生成這個項目信息的報告文檔。并且這個是默認的生成項。
這個默認的生成項將根據項目的信息生成以下報告:
-
持續集成信息(Continuous Integration)
-
依賴性信息(Dependencies)
-
發布追蹤信息(Issue Tracking)
-
郵件列表信息(Mailing Lists)
-
工程協議信息(Project License)
-
項目團隊信息(Project Team)
-
源碼庫信息(Source Repository)
根據筆者測試,以上信息均是在pom.xml進行設置的。
-
持續集成信息根據以下配置信息生成:
<ciManagement>
<system/>
<url/>
<notifiers>
<notifier>
<type/>
<sendOnError/>
<sendOnFailure/>
<sendOnSuccess/>
<sendOnWarning/>
<address/>
<configuration/>
</notifier>
</notifiers>
</ciManagement>
-
依賴性信息根據以下配置信息有關
<dependencies> <dependency> <groupId/> <artifactId/> <version/> <type/> <classifier/> <scope/> <systemPath/> <exclusions> <exclusion> <artifactId/> <groupId/> </exclusion> </exclusions> <optional/> </dependency> </dependencies> |
-
發布追蹤信息
<issueManagement> <system/> <url/> </issueManagement> |
-
郵件列表信息
<mailingLists> <mailingList> <name/> <subscribe/> <unsubscribe/> <post/> <archive/> <otherArchives/> </mailingList> </mailingLists> |
筆者在pom.xml中設置以上信息后,運行mvn site總會報錯。如果哪位了解到報錯原因請告訴我,謝謝。zhangxl@sintal.cn
-
工程協議信息
<licenses> <license> <name/> <url/> <distribution/> <comments/> </license> </licenses> |
-
項目團隊信息
<organization> <name/> <url/> </organization> |
<developers> <developer> <id/> <name/> <email/> <url/> <organization/> <organizationUrl/> <roles/> <timezone/> <properties/> </developer> </developers>
|
<contributors> <contributor> <name/> <email/> <url/> <organization/> <organizationUrl/> <roles/> <timezone/> <properties/> </contributor> </contributors> |
-
源碼庫信息
<scm> <connection/> <developerConnection/> <tag/> <url/> </scm> |
默認情況下這些文檔將生成在$basedir/src/site目錄下。
需要得到其他的報告,則需要配置其他的報告插件。
要想了解更多的信息,請參考以下網頁:
http://cvs.peopleware.be/training/maven/maven2/morePlugins.html
依賴管理
這里我們通過使用外部依賴(external dependencies)來大家對maven的依賴管理有一個簡單而具體的了解。
當我們在做一個工程的時候,不可能一切都是從空白開始,對于我們做Web應用的來說,使用框架已經司空見慣,而這種對框架的引入使用對于Maven來說,就是工程的依賴。而我們的工程要進行測試,則不能少了對Junit框架的依賴。
依賴管理是maven的一個主要特征,這個是對于用戶來說,是Maven令人振奮的一個最著名的特征。對于一個單一的工程來說,依賴管理沒有什么困難的,但是當你開始處理多個模塊的工程或由10多個甚至上百個模塊組成的應用程序時, Maven能幫助你輕松穩定的控制這些大量的依賴。
在pom.xml中dependencies部分列出了所有外部依賴,詳細描述了在編譯時,測試時,運行時是否需要這個依賴。現在,假定我們的工程只有對Junit的依賴。它的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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>Maven Quick Start Archetype</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
從以上pom.xml文件可以看出,定義一個外部依賴(external dependencies)至少需要4個元素:groupId, artifactId, version, and scope。對于groupId, artifactId, version的意思,和前面我們在創建工程時提到的這幾個元素的意義相同,這里就不再重復介紹,scope元素指出你的工程如何使用依賴,并且它的值有compile,test和runtime等等。想要了解更多的依賴說明的信息,請看
http://maven.apache.org/maven-model/maven.html
要想了解完整的依賴機制,請看
http://maven.apache.org/guides/introduction/introduction-to-dependency-management.html
有了這些依賴信息,Maven將能在工程構建時引用依賴。
引用的過程是:
首先,在本地倉庫(默認的本地倉庫地址為:~/.m2/repository)中查找此依賴是否存在。
再次,如果在本地倉庫中未發現,則在遠程倉庫中下載此依賴,并下載到本地倉庫中。
最后,通過以上兩個步驟就能找到依賴。如果遠程倉庫無法訪問,則可以設置其他遠程倉庫。具體請看
http://maven.apache.org/guides/introduction/introduction-to-repositories.html
一個簡單的例子。比如我們要添加一個log4j到我們的工程中。
首先.需要了解log4j的groupId, artifactId, and version信息??稍?font face="Times New Roman, serif">google上搜索“site:www.ibiblio.org maven2 log4j”。這樣在搜索結果里可以找到/maven2/log4j/log4j (or /pub/packages/maven2/log4j/log4j)這樣的目錄,在這個目錄中有一個文件叫做maven-metadata.xml。這個文件內容如下所示:
-
<metadata>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.1.3</version>
<versioning>
<versions>
<version>1.1.3</version>
<version>1.2.4</version>
<version>1.2.5</version>
<version>1.2.6</version>
<version>1.2.7</version>
<version>1.2.8</version>
<version>1.2.11</version>
<version>1.2.9</version>
<version>1.2.12</version>
</versions>
</versioning>
</metadata>
這樣我們能找到groupId為log4j,artifactId為log4j,version當然要用最新的,選擇1.2.12。scope我們設置為compile。
這樣我們使用mvn compile 編譯工程時,會看到mvn下載了log4j到我們的本地倉庫。
配置管理
Maven的配置管理是作為一個單獨的Maven子項目在做。叫做SCM。他是這樣介紹的:
MavenSCM支持Maven 2.x插件(例如,maven-release-plugin)和其他工具(例如,Continuum,這個是一個和maven 2.x結合很好的一個持續集成工具。),Maven SCM提供給他們一個公共的API去做配置管理的各種操作。當然了要執行配置管理操作,當然少不了配置滾里工具了。Maven SCM給出了一個列表,說明Maven SCM現在所支持的配置管理工具。
完全支持的配置管理工具 |
CVS Subversion Perforce StarTeam |
部分支持的配置管理工具 |
ClearCase File system Visual Source Safe |
不支持的配置管理工具 |
Accurev Aegis Arch BitKeeper ClearCase Multisite CM Synergy Code Co-op Darcs Monotone OpenCM PureCM Serena PVCS / Dimension Starteam Enterprise Svk Vesta |
當你選中了上面的一個配置管理工具,你就可以利用Maven 2.x的插件或者集成管理工具進行配置管理了。
-
持續集成工具continuum
continuum是Maven的一個子項目。他是一個構建基于java的工程的持續集成服務器。他支持以下多種工程類型:
-
Maven 1
-
Maven 2
-
Ant
-
Shell scripts
continuum有以下特征
-
緊密整合Maven 2.x
-
緊密整合Maven SCM
-
Subversion
-
CVS
-
Starteam
-
Clearcase
-
Perforce
-
-
更易用的基于網絡的設置和界面
-
基于Quartz(Quartz-based)的時間計劃表設置
-
添加新項目十分方便
-
郵件通知
-
其他IM通知
-
IRC
-
Jabber
-
MSN
-
-
責備機制(Blame Mechanism)
-
下載:
在以下連接處下載此軟件
http://maven.apache.org/continuum/download.html |
安裝:
Windows 2000/XP
解壓縮continuum-1.0.2-bin.zip到你希望安裝Continuum 1.0.2的所在目錄。這里假定你安裝在C:\Program Files\Apache Software Foundation\continuum-1.0下。
運行:
-
bin/linux/run.sh 如果是UNIX平臺
-
bin/solaris/run.sh 如果是Solaris平臺
-
bin/win32/run.bat 如果是Windows平臺
-
bin/macosx/run.sh 如果是MacOS X平臺.
-
bin/plexus.sh 如果是其他平臺
當服務器啟動成功后,打開瀏覽器訪問:
http://localhost:8080/continuum/ |
注意:由于continuum判斷一個工程是否構建成功,是使用一個命令行返回值。而windows平臺的用戶,這個返回值有問題。因此需要修改以下maven 2的bin/mvn.bat文件。這里可以直接從以下地址下載修改后的文件替換掉即可。
http://maven.apache.org/continuum/scripts/mvn.bat |
-
添加一個項目到continuum
要添加一個maven 2的項目到continuum,需要寫入一個pom url或者導入一個pom.xml,當然導入的這個pom.xml文件中包含了continuum需要的各種信息。
我們來看看導入的pom.xml文件中具體需要包含哪些項:
-
配置管理信息(The SCM information)
<scm> <connection/> <developerConnection/> <tag/> <url/> </scm> |
-
開發者信息(The developers)
<ciManagement> <system>continuum</system> <notifiers> <notifier> ... </notifier> </notifiers> </ciManagement> |
-
集成后所有的通知人信息(The notifiers)
<notifier> <type>mail</type> <configuration> <address>dev@maven.apache.org</address> </configuration> <notifier> |
<notifier> <type>irc</type> <configuration> <host>irc.codehaus.org</host> <port>6667</port> <channel>#maven</channel> </configuration> </notifier> |
-
構建工程
-
按照定制的時間構建
-
點擊本項目上的build按鈕進行構建。
發布管理Releases
-
發布配置方法
要發布(Releases)一個項目,需要在pom.xml和setting.xml中分別配置。
在pom.xml中
<distributionManagement> <repository> <id>mycompany-repository</id> <name>MyCompany Repository</name> <url>scp://repository.mycompany.com/repository/maven2</url> </repository> </distributionManagement> |
在setting.xml中
<settings> . . <servers> <server> <id>mycompany-repository</id> <username>jvanzyl</username> <!-- Default value is ~/.ssh/id_dsa --> <privateKey>/path/to/identity</privateKey> (default is ~/.ssh/id_dsa) <passphrase>my_key_passphrase</passphrase> </server> </servers> . . </settings> |
通過以上的設置,項目將可以發布到遠程倉庫,遠程服務器。
項目發布現在支持scp,ftp和scpexe等方式。
-
Setting.xml文件
這個文件是一個maven的配置文件。
他有下面的功能:
-
配置本地倉庫
-
配置訪問網絡的代理服務器
-
安全和部署的設置。
-
為倉庫設置景象
想要了解更多這個文件的信息可以參考一下以下文章:
http://maven.apache.org/guides/mini/guide-configuring-maven.html |
-
運行發布的命令
mvn deploy |
Maven和eclipse工具的合作
當有了以上的工程目錄,無論是webapp工程,還是app,我們都希望在集成開發環境中開發。Maven如何和IDE集成?,F在我們就來進行講解。
-
首先要讓eclipse知道Maven 2的repository(倉庫)的路徑。
因此要設置一個M2_REPO的變量為classpath。
可以使用命令行的方式來設置:
-
mvn -Declipse.workspace=<path-to-eclipse-workspace> eclipse:add-maven-repo
還可以在eclipse中定義一個新的classpath變量通過在eclipse的菜單上選擇Window> Preferences. 選擇Java > Build Path > Classpath Variables page.
-
生成eclipse的工程文件。
使用命令行
-
mvn eclipse:eclipse
這樣通過在eclipse的菜單上選擇File >Import >Existing Projects into Workspace,就可以將工程導入eclipse中。
通過以上2個步驟,我們就可以利用eclipse來進行開發工作了。
-
Eclipse插件mavenide
同時在eclipse中我們可以下載一個maven的插件,用來輔助eclipse進行maven工程的開發工作。這個插件名稱叫做mavenide。
這個插件可使用以下更新站點:http://m2eclipse.codehaus.org/
并且非常方便的是,這里還提供了一個flash的演示來介紹如何安裝此插件,這個flash演示的觀看地址在:
http://m2eclipse.codehaus.org/Installing_Maven_2.0_plugin_for_Eclipse.html
要正常使用此插件請注意以下問題:
eclipse使用3.1或以上版本。
Mavenide的插件為0.0.5不要安裝錯誤了。
通過筆者在安裝好此插件的一些使用后,看到了此插件的以下一些特性。
-
可以方便的添加依賴。
-
在編輯完pom.xml文檔后,會自動檢查此文檔的格式是否正確。
-
可以將mvn的一些命令通過擴展工具的方式在eclipse中輕松執行。