幸せのちから

          平凡的世界
          看似平常實崎嶇
          成如容易卻艱辛

          Maven2 介紹

          Chapter?1.?Maven2

          1.1.?Maven2 體驗

          聲明:本節(jié)內(nèi)容來源于blogjava網(wǎng)站jbob的blog 本節(jié)的版權(quán)歸原作者所有,不適用本手冊的版權(quán)申明。

          maven是一個java項目管理工具,深化了ant,但又有自己一整套的項目集成策略。目前的版本是2.0.2。

          1. maven網(wǎng)站 下載maven2,解壓縮

          2. 配置環(huán)境變量:maven_home、path

          3. cmd-> mvn --version 檢查是否安裝成功 [顯示版本號,則說明安裝成功]

          4. 配置,Maven的配置分為三個層次:

            • - pom.xml:針對某個項目的配置

            • Installation

            • User -針對某個用戶的配置

            我們首先配置主要是user級別的,主要包括兩點:設(shè)置本地的資源庫和代理服務(wù)器[如果需要的話] 在%maven_home%/conf/setting.xml中配置:

            					<localRepository>d:/repo</localRepository>
            					<proxy>
            <id>proxy1</id>
            <active>true</active>
            <protocol>http</protocol>
            <username></username>
            <password></password>
            <host>222.136.91.1</host>
            <port>80</port>
            <nonProxyHosts></nonProxyHosts>
            </proxy>

            修改之后copy一份到${home}/.m2

          5. 建立新的項目

            					mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app
            • 首先,程序會從遠程下載必要的jar包到你的localRepository,即我們剛剛設(shè)置的[d:/repo]

            • 然后,會在當前目錄下面生成my-app文件夾,包括簡單的包結(jié)構(gòu)[java,test]和一個HelloWorld程序及測試,以及pom.xml文件。

            注意:pom.xml contains the Project Object Model (POM) for this project.The POM is the basic unit of work in Maven。

          6. 編譯

            mvn compile

            第一次運行會下載很多jar包,而且機器負荷會很重。運行這個命令需要在pom.xml相同目錄下面, 這個編譯只編譯主程序,不會編譯test下面的程序。如果需要單獨編譯test,請運行:

            mvn test-compile

            compile之后會生成target文件夾,主程序編譯在classes下面,測試程序放在test-classes下

          7. 測試

            mvn test

            會自動先編譯再運行測試

          8. 打包

            mvn package

            打包之前會進行編譯,測試

          9. 安裝

            mvn install

            會將package之后的jar包copy到

            <local-repository>/com/mycompany/app/my-app/1.0-SNAPSHOT/my-app-1.0-SNAPSHOT.jar
          10. 其他

            mvn site

            注意,還可以:

            deploy site

            在pom.xml中加入

             <distributionManagement>
            <site>
            <id> website </id>
            < url> scp://www.mycompany.com/www/docs/project/ </url>
            </site>
            </distributionManagement>

            當然你需要設(shè)置server

            mvn site-deploy
            mvn clean
            mvn idea:idea [為IDE工具idea生成項目文件]
          11. Resource

            ${basedir}/src/main/resources都會編譯到j(luò)ar文件中,而且該目錄下的內(nèi)容將直接位于jar文件的頂部。

            測試用資源文件-> ${basedir}/src/test/resources,引用時如下例:

            InputStream is = getClass().getResourceAsStream( "/test.properties" );

            文件位于 ${basedir}/src/test/resources/test.properties。

          12. 如何filter我們的資源文件

               < build >
            < resources >
            < resource >
            < directory > src/main/resources </ directory >
            < filtering > true </ filtering >
            </ resource >
            </ resources >
            </ build >

            因為原來默認的filter為false所以要加上上面的代碼

            eg:我們在src/main/resources下面建立application.properties文件

            # application.properties
            application.name=${pom.name}
            application.version=${pom.version}

            運行:mvn process-resources 在target/classes下面的application.properties結(jié)果為:

             # application.properties
            application.name=Maven Quick Start Archetype
            application.version=1.0-SNAPSHOT

            這就是所謂的filter。當然filter還可以用其他的外部文件,不一定來自pom.xml[ ${pom.name} ]以及setting.xml[ ${settings.localRepository }]

            e.g src/main/filters/filter.properties:

            # filter.properties
            my.filter.value=hello!

            pom.xml:

             < build >
            < filters >
            < filter > src/main/filters/filter.properties </ filter >
            </ filters >
            < resources >
            < resource >
            < directory > src/main/resources </ directory >
            < filtering > true </ filtering >
            </ resource >
            </ resources >
            </ build >

            # application.properties

            application.name=${pom.name}
            application.version=${pom.version}
            message=${my.filter.value}

            這樣在運行mvn process-resources 會得到類似的效果,當然我們也可以直接在pom.xml中定義:

            < build >
            < resources >
            < resource >
            < directory > src/main/resources </ directory >
            < filtering > true </ filtering >
            </ resource >
            </ resources >
            </ build >
            < properties >
            < my .filter.value > hello </ my.filter.value >
            </ properties >

            效果同樣,這樣就不需要外部文件了。另外filter還可以來自系統(tǒng)設(shè)置以及可以自定義:

            # application.properties
            java.version=${java.version}
            command.line.prop=${command.line.prop}
          13. jar包依賴

            我們在mvn install后在local repo中生成的jar包也可以被其他項目所引用

            <dependency>
            <groupId>com.mycompany.app</groupId>
            <artifactId>my-app</artifactId>
            <version>1.0-SNAPSHOT</version>
            <scope>compile</scope>
            </dependency>

            注意scope,這里是compile,如果使用junit,scope是test。

            舉例說明:如果我們的project需要用到log4j包,那么我們可以 先google--"site:www.ibiblio.org maven2 log4j"。Index of /maven2/log4j/log4j 下面有maven-metadata.xml 描述了groupId,artifactId,version等等。獲取了這些信息之后,你 就可以在pom.xml中添加依賴

            <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.12</version>
            <scope>compile</scope>
            </dependency>
          14. 如何發(fā)布我的jar包到我的remote repository

            你需要在setting.xml中間設(shè)置server:

            <servers>
            <server>
            <id>mycompany-repository</id>
            <username>jvanzyl</username>
            <!-- Default value is ~/.ssh/id_dsa -->
            <privateKey>/path/to/identity</privateKey>
            <passphrase>my_key_passphrase</passphrase>
            </server>
            </servers>

            然后在pom.xml中設(shè)置遠程url:

            <distributionManagement>
            <repository>
            <id>mycompany-repository</id>
            <name>MyCompany Repository</name>
            <url>scp://repository.mycompany.com/repository/maven2</url>
            </repository>
            </distributionManagement>

          1.2.?Maven2的Eclipse插件安裝和使用

          1.2.1.?安裝

          你可以從http://m2eclipse.codehaus.orgupdate安裝Maven2的Eclipse插件,具體 安裝步驟請看該網(wǎng)站提供的Flash Demo: http://m2eclipse.codehaus.org/Installing_Maven_2.0_plugin_for_Eclipse.html

          1.2.2.?使用

          該插件的使用請看該網(wǎng)站提供的Flash Demo: http://m2eclipse.codehaus.org/Maven_2.0_Plugin_for_Eclipse.html

          關(guān)于openfan項目的Maven操作請參看后續(xù)章節(jié)。

          posted on 2006-04-13 00:14 Lucky 閱讀(13296) 評論(5)  編輯  收藏 所屬分類: extremeComponents

          評論

          # re: Maven2 介紹 2006-12-14 06:39 yyp[匿名]

          very helpful!

          Thank you!  回復  更多評論   

          # re: Maven2 介紹 2007-04-20 15:45 逍遙魚

          非常感謝,很有價值  回復  更多評論   

          # re: Maven2 介紹 2007-07-09 17:04 Thomas

          非常棒!  回復  更多評論   

          # re: Maven2 介紹[未登錄] 2008-04-21 14:16 小Q

          玩struts2時要maven,很不錯,收藏  回復  更多評論   

          # re: Maven2 介紹 2009-03-11 07:18 kewei

          非常的感謝!很有用,講的步驟很清楚!讓我懂了到底Maven是做什么用的。  回復  更多評論   

          <2006年4月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          導航

          隨筆分類(125)

          文章分類(5)

          日本語

          搜索

          積分與排名

          最新隨筆

          最新評論

          主站蜘蛛池模板: 铜梁县| 铜川市| 清河县| 阿坝县| 九龙县| 钟祥市| 吉林市| 资源县| 九台市| 安化县| 中超| 克东县| 自治县| 奉节县| 仙桃市| 万盛区| 梁平县| 长乐市| 上犹县| 福建省| 乌兰浩特市| 博白县| 栾川县| 乌海市| 于田县| 德昌县| 宁都县| 普兰县| 城口县| 涞水县| 建水县| 龙井市| 年辖:市辖区| 周宁县| 博白县| 阿图什市| 枝江市| 姜堰市| 惠来县| 凤庆县| 博乐市|