qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

          使用Archetype生成項(xiàng)目骨架

          3.5 使用Archetype生成項(xiàng)目骨架

          Hello World項(xiàng)目中有一些Maven的約定:在項(xiàng)目的根目錄中放置pom.xml,在src/main/java目錄中放置項(xiàng)目的主代碼,在src/test/java中放置項(xiàng)目的測試代碼。之所以一步一步地展示這些步驟,是為了能讓可能是Maven初學(xué)者的你得到最實(shí)際的感受。我們稱這些基本的目錄結(jié)構(gòu)和pom.xml文件內(nèi)容稱為項(xiàng)目的骨架,當(dāng)?shù)谝淮蝿?chuàng)建項(xiàng)目骨架的時候,你還會饒有興趣地去體會這些默認(rèn)約定背后的思想,第二次,第三次,你也許還會滿意自己的熟練程度,但第四、第五次做同樣的事情,你可能就會惱火了。為此Maven提供了Archetype以幫助我們快速勾勒出項(xiàng)目骨架。

          還是以Hello World為例,我們使用maven archetype來創(chuàng)建該項(xiàng)目的骨架,離開當(dāng)前的Maven項(xiàng)目目錄。

          如果是Maven 3,簡單地運(yùn)行:

          1. mvn archetype:generate 

          如果是Maven 2,最好運(yùn)行如下命令:

          1. mvn org.apache.maven.plugins:mavenarchetype
            plugin:2.0alpha5:generate  

          很多資料會讓你直接使用更為簡單的 mvn archetype:generate 命令,但在Maven 2中這是不安全的,因?yàn)樵撁顩]有指定Archetype插件的版本,于是Maven會自動去下載最新的版本,進(jìn)而可能得到不穩(wěn)定的SNAPSHOT版本,導(dǎo)致運(yùn)行失敗。然而在Maven 3中,即使用戶沒有指定版本,Maven也只會解析最新的穩(wěn)定版本,因此這是安全的。具體內(nèi)容見7.7節(jié)。

          我們實(shí)際上是在運(yùn)行插件mavenarchetypeplugin,注意冒號的分隔,其格式為 groupId:artifactId:version:goal,org.apache.maven.plugins 是maven官方插件的groupId,mavenarchetypeplugin 是Archetype插件的artifactId,2.0alpha5 是目前該插件最新的穩(wěn)定版,generate是要使用的插件目標(biāo)。

          緊接著會看到一段長長的輸出,有很多可用的Archetype供選擇,包括著名的Appfuse項(xiàng)目的Archetype、JPA項(xiàng)目的Archetype等。每一個Archetype前面都會對應(yīng)有一個編號,同時命令行會提示一個默認(rèn)的編號,其對應(yīng)的Archetype為mavenarchetypequickstart,直接回車以選擇該Archetype,緊接著Maven會提示輸入要創(chuàng)建項(xiàng)目的groupId、artifactId、version以及包名package。如下輸入并確認(rèn):

          1. Define value for groupId: : com.juvenxu.mvnbook  
          2. Define value for artifactId: : helloworld  
          3. Define value for version:  1.0SNAPSHOT: :  
          4. Define value for package:  com.juvenxu.mvnbook: : 
            com.juvenxu.mvnbook.helloworld  
          5. Confirm properties configuration:  
          6. groupId: com.juvenxu.mvnbook  
          7. artifactId: helloworld  
          8. version: 1.0SNAPSHOT  
          9. package: com.juvenxu.mvnbook.helloworld 
          10. Y: : YArchetype

          插件將根據(jù)我們提供的信息創(chuàng)建項(xiàng)目骨架。在當(dāng)前目錄下,Archetype插件會創(chuàng)建一個名為helloworld(我們定義的artifactId)的子目錄,從中可以看到項(xiàng)目的基本結(jié)構(gòu):基本的pom.xml已經(jīng)被創(chuàng)建,里面包含了必要的信息以及一個junit依賴;主代碼目錄src/main/java已經(jīng)被創(chuàng)建,在該目錄下還有一個Java類com.juvenxu.mvnbook.helloworld.App,注意這里使用到了剛才定義的包名,而這個類也僅僅只有一個簡單的輸出Hello World!的main方法;測試代碼目錄src/test/java也被創(chuàng)建好了,并且包含了一個測試用例com.juvenxu.mvnbook.helloworld.AppTest。

          Archetype可以幫助我們迅速地構(gòu)建起項(xiàng)目的骨架,在前面的例子中,我們完全可以在Archetype生成的骨架的基礎(chǔ)上開發(fā)Hello World項(xiàng)目以節(jié)省大量時間。

          此外,這里僅僅是看到了一個最簡單的Archetype,如果有很多項(xiàng)目擁有類似的自定義項(xiàng)目結(jié)構(gòu)以及配置文件,則完全可以一勞永逸地開發(fā)自己的Archetype,然后在這些項(xiàng)目中使用自定義的Archetype來快速生成項(xiàng)目骨架。本書后面的章節(jié)會詳細(xì)闡述如何開發(fā)Maven Archetype。

          Maven2創(chuàng)建Java項(xiàng)目

          1、打開命令行窗口,顯示在保存項(xiàng)目的位置;

          2、創(chuàng)建JAVA項(xiàng)目

               命令:mvn archetype:generate

          * 輸入需要創(chuàng)建的項(xiàng)目,這里創(chuàng)建普通java項(xiàng)目,按照選擇輸入15,默認(rèn)就可以了; 
          Define value for groupId :輸入組織ID; 
          Define value for groupId :輸入項(xiàng)目名稱; 
          Define value for version :輸入版本號,可以直接回車,默認(rèn)是1.0-SNAPSHOT; 
          Define value for package :java的包名,如com.shichao; 
          完成以上輸入后,命令行顯示以上信息,輸入y 即完成創(chuàng)建.

          3、將maven項(xiàng)目轉(zhuǎn)化為eclipse項(xiàng)目

                mvn eclipse:eclipse

                maven將生成eclipse需要的配置文件,形成eclipse項(xiàng)目(如.project文件); 
                打開eclipse,菜單選擇:file>import>general>existing projects into workspace,在對話框中選中目錄,導(dǎo)入即可;

          4、清除eclipse項(xiàng)目相關(guān)配置

               mvn eclipse:clean

               maven將清除項(xiàng)目中eclipse配置文件

           

          Maven2創(chuàng)建WEB項(xiàng)目

                在maven的工作空間(這里的工作空間即將要存放所創(chuàng)建的Web項(xiàng)目文件夾的文件夾。如E:\maven)中執(zhí)行如下的命令:

                mvn archetype:create -DgroupId=com.javaeye.webfoo -DartifactId=webfoo -DarchetypeArtifactId=maven-archetype-webapp

                再將項(xiàng)目導(dǎo)入eclipse即可!

          posted on 2014-03-12 11:35 順其自然EVO 閱讀(5153) 評論(0)  編輯  收藏 所屬分類: 持續(xù)集成maven

          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 邵阳县| 武穴市| 吉首市| 屯门区| 弥勒县| 平原县| 遵化市| 木里| 通州市| 谢通门县| 牡丹江市| 玉龙| 垦利县| 水城县| 剑阁县| 周至县| 乌鲁木齐县| 金门县| 柘荣县| 曲阜市| 建水县| 蕉岭县| 临邑县| 张家川| 北海市| 法库县| 师宗县| 西林县| 友谊县| 临洮县| 连江县| 峨边| 虎林市| 绵竹市| 象山县| 浪卡子县| 连江县| 茂名市| 雷波县| 辽宁省| 泉州市|