Maven簡介

Maven簡介

Maven最初的目的是在Jakarta Turbine項目中使構建處理簡單化。幾個項目之間使用到的Ant build文件差異很小,各個JAR都存入CVS。因此希望有一個標準的方法構建各個工程,清晰的定義一個工程的組成,一個容易的方法去發佈項目信息並且去提供一種在各個項目之間共享JAR包。

結果出現了一種功能能用於構建和管理任何基於java的工程。Maven小組希望他們已經做到了一些事情,這將有助於Java開發者更容易的完成每天的工作並且有助於理解任何基於java的項目。

Maven的目標是:

  • 使構建過程更容易

  • 提供統一構建系統

  • 提供高質量的項目信息

  • 提供開發的最佳實踐指南

  • 能無縫的加入新的特性

Maven的錯誤理解

  • Maven是一個站點和文檔製作工具。

  • Maven擴展了Ant,使其能下載到各種依賴包

  • Maven是一系列可重用的Ant腳本

Maven的版本。

Maven現在主要有Maven 1.xMaven 2.x,其中現在最新版本是Maven 2.02

Maven 2完成了對Maven 1的重寫。重寫的首要目的是要提供了強大的Jave構建和包含API的項目,允許Maven被植入任何地方,尤其是高級別的產品如IDEs、質量工具、報告工具等這些。Maven 2構建生命週期的概念正式化,其比Maven更易擴展。

因此現在我們主要研究的就是Maven 2

Maven的安裝

  1. Windows 2000/xp下的安裝

    1. 解壓縮maven-2.0.2-bin.zip到你希望安裝Maven 2.0.2的所在目錄。這裏假設你選擇了C:/ProgramFiles/Apache Software Foundation/maven-2.0.2.

    2. C:/Program Files/Apache Software Foundation/maven-2.0.2/bin目錄加入到你的%path%環境變量中。

    3. 同時,確認JAVA_HOME是否正確設置成功。

    4. 運行 mvn --version 確認是否安裝成功。

顯示Maven version: 2.0.2 則表示安裝成功。

  1. 基於Unxibased的操作系統(LinuxSolaris and Mac OS X

    1. 解壓縮發佈包到你希望安裝Maven 2.0.2的所在目錄。這裏假設你選擇了/usr/local/maven-

    2. /usr/local/maven-2.0.2/bin目錄加入到你的path環境變量中,例如:PATH=/usr/local/maven-2.0.2y/bin: $PATH

    3. 同時,確認JAVA_HOME是否正確設置成功。

    4. 運行 mvn --version 確認是否安裝成功。

顯示Maven version: 2.0.2 則表示安裝成功。

Maven主要功能列表

Maven是一種對項目的管理工具,它提供了一種方式來管理以下項目中涉及到的工作內容,同時以下也是Maven的主要功能:

  • 構建項目(Builds

  • 文檔編制(Documentation

  • 報告(Reporting

  • 依賴管理(Dependencies

  • 配置管理(SCMs

  • 發佈管理(Releases

構建項目

  1. 首先創建一個Maven工程

Maven可用於構建java應用工程和java web應用工程。

  1.  
    1. 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>

 

 

  1.  
    1. 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>

 

 

  1. 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.xmlbuild.xml,另外還包括提供給最終用戶的文件,如,README.txt, LICENSE.txt等等。

 

頂級目錄還包括兩個子目錄:srctarget。頂級目錄下可能出現的其他目錄僅僅是CVS.svn和其他多模塊工程的工程目錄,最好不要再有其他目錄。

 

Target目錄是所有工程編譯構建的輸出目錄。

 

Src目錄包含所有工程的源碼文件,配置文件,資源文件等等。它下面的子目錄一般包含main(主要的工程源文件),test(測試文件),site(項目站點文件)。

  1. 項目構建的生命週期的介紹

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的構建生命週期也是可以擴展和自定義的,這裏就先不做介紹了。

  1. 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 這個元素指出製品的類型(例如:JARWAREAR等等)。這個元素不僅僅指示出製品的類型,同時也指示出工程構建過程中的部分生命週期。Packaging的默認值是JAR

  • version 這個元素指出這個項目產生的製品的版本號,Maven在幫助開發人員管理版本號時走了很長的路,以後你將經常看到SNAPSHOT在一個版本中,這個表示一個工程仍然在開發狀態。

  • name 這個元素指出這個工程顯示的名稱。這個常用於Maven產生的文檔中。

  • url 這個員算指出在哪裏能發現工程的站點。這個常用於Maven產生的文檔中。

  • desription 這個元素提供了這個工程基本的描述。這個也常用於Maven產生的文檔中。

以上只是pom.xml中的一些基本項,完整的pom.xml的元素介紹請參考:

http://maven.apache.org/maven-model/maven.html

文檔編制

  1. 文檔創建:

對於如何創建和編制文檔,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所支持的文檔格式。

 

  1. 文檔格式:

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

  1. 文檔國際化:

當然,你可能早就想到文檔國際化的問題,這裏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總會報錯。如果哪位瞭解到報錯原因請告訴我,謝謝。[email protected]

  • 工程協議信息

 

<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.xmldependencies部分列出了所有外部依賴,詳細描述了在編譯時,測試時,運行時是否需要這個依賴。現在,假定我們的工程只有對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元素指出你的工程如何使用依賴,並且它的值有compiletestruntime等等。想要了解更多的依賴說明的信息,請看

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到我們的工程中。

首先.需要了解log4jgroupId, artifactId, and version信息。可在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>

這樣我們能找到groupIdlog4jartifactIdlog4jversion當然要用最新的,選擇1.2.12scope我們設置爲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的插件或者集成管理工具進行配置管理了。

  1. 持續集成工具continuum

continuumMaven的一個子項目。他是一個構建基於java的工程的持續集成服務器。他支持以下多種工程類型:

  • Maven 1

  • Maven 2

  • Ant

  • Shell scripts

continuum有以下特徵

  • 緊密整合Maven 2.x

  • 緊密整合Maven SCM

    • Subversion

    • CVS

    • Starteam

    • Clearcase

    • Perforce

  • 更易用的基於網絡的設置和界面

  • 基於QuartzQuartz-based)的時間計劃表設置

  • 添加新項目十分方便

  • 郵件通知

  • 其他IM通知

    • IRC

    • Jabber

    • MSN

  • 責備機制(Blame Mechanism

  1. 下載:

在以下連接處下載此軟件

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 2bin/mvn.bat文件。這裏可以直接從以下地址下載修改後的文件替換掉即可。

http://maven.apache.org/continuum/scripts/mvn.bat

  1. 添加一個項目到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>[email protected]</address>

</configuration>

<notifier>

 

<notifier>

<type>irc</type>

<configuration>

<host>irc.codehaus.org</host>

<port>6667</port>

<channel>#maven</channel>

</configuration>

</notifier>

  1. 構建工程

  • 按照定製的時間構建

  • 點擊本項目上的build按鈕進行構建。

發佈管理Releases

  1. 發佈配置方法

要發佈(Releases)一個項目,需要在pom.xmlsetting.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>

通過以上的設置,項目將可以發佈到遠程倉庫,遠程服務器。

項目發佈現在支持scpftpscpexe等方式。

  1. Setting.xml文件

這個文件是一個maven的配置文件。

他有下面的功能:

  • 配置本地倉庫

  • 配置訪問網絡的代理服務器

  • 安全和部署的設置。

  • 爲倉庫設置景象

想要了解更多這個文件的信息可以參考一下以下文章:

http://maven.apache.org/guides/mini/guide-configuring-maven.html

  1. 運行發佈的命令

mvn deploy

 

Maveneclipse工具的合作

當有了以上的工程目錄,無論是webapp工程,還是app,我們都希望在集成開發環境中開發。Maven如何和IDE集成。現在我們就來進行講解。

  1. 首先要讓eclipse知道Maven 2repository(倉庫)的路徑。

因此要設置一個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.

  1. 生成eclipse的工程文件。

使用命令行

mvn eclipse:eclipse

這樣通過在eclipse的菜單上選擇File >Import >Existing Projects into Workspace,就可以將工程導入eclipse中。

 

通過以上2個步驟,我們就可以利用eclipse來進行開發工作了。

  1. 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不要安裝錯誤了。

通過筆者在安裝好此插件的一些使用後,看到了此插件的以下一些特性。

  1. 可以方便的添加依賴。

  2. 在編輯完pom.xml文檔後,會自動檢查此文檔的格式是否正確。

  3. 可以將mvn的一些命令通過擴展工具的方式在eclipse中輕鬆執行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章