国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開(kāi)通VIP
我的Maven之旅(6)-通過(guò)Maven創(chuàng)建項(xiàng)目

前面我們講到為什么使用Maven, Maven的安裝, 與IDE的集成, 建立Nexus本地倉(cāng)庫(kù), 這些都是在我們?cè)谡絼?chuàng)建項(xiàng)目的前的準(zhǔn)備工作. 從這一章開(kāi)始我們介紹利用Maven來(lái)創(chuàng)建, 管理我們的項(xiàng)目.

 

這里假設(shè)你已經(jīng)閱讀了我前面的幾篇文章, 或者你已經(jīng)安裝了Maven, 配置好了IDE集成環(huán)境. 項(xiàng)目的創(chuàng)建大致分為兩種, 一種是通過(guò)Maven的命令行來(lái)操作, 另一種是通過(guò)IDE界面環(huán)境來(lái)創(chuàng)建, 下面我們分別來(lái)介紹:

通過(guò)Maven命令行來(lái)創(chuàng)建項(xiàng)目
Maven項(xiàng)目的創(chuàng)建是通過(guò)插件archetype(原型)來(lái)創(chuàng)建的, 也有人翻譯成骨架, 你可以理解為Template. 通過(guò)archetype可以選擇創(chuàng)建最基本的項(xiàng)目模型, 也可以通過(guò)預(yù)置模板來(lái)創(chuàng)建項(xiàng)目, archetype預(yù)置了很多項(xiàng)目模板, 比如Spring項(xiàng)目模板, EJB項(xiàng)目模板等. 下面我們分別來(lái)介紹:

創(chuàng)建基本項(xiàng)目
假如我們要生成一個(gè)名稱為ftpserver項(xiàng)目,在命令行提示符下執(zhí)行以下命令:

mvn archetype:create       -DarchetypeGroupId=org.apache.maven.archetypes  -DgroupId=com.alibaba.base
-DartifactId=ftpserver

第一個(gè)參數(shù)-DarchetypeGroupId 是制定archetype插件的所屬的groupId

第二個(gè)參數(shù)-DgroupId是制定你將要?jiǎng)?chuàng)建的項(xiàng)目的groupId, 根據(jù)自己項(xiàng)目情況做相應(yīng)的修改

第三個(gè)參數(shù)-DartifactId是制定你要?jiǎng)?chuàng)建的構(gòu)件ID, 這個(gè)例子是 ftpserver

 

執(zhí)行后類似的顯示如下:

 

 

下面我們看一下生成的POM.xml文件:

<project xmlns="       xmlns:xsi="

   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
     

  <modelVersion>4.0.0</modelVersion>

  <groupId>com.alibaba.base</groupId>

  <artifactId>ftpserver</artifactId>

  <packaging>jar</packaging>

  <version>1.0-SNAPSHOT</version>

  <name>ftpserver</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>

 

這里介紹下一些主要標(biāo)簽的作用:

modelVersion 制定POM文件所使用的模板版本, 雖然POM文件版本是不經(jīng)常更新的,但是強(qiáng)制指定版本可以保持整個(gè)項(xiàng)目的一致性和穩(wěn)定性.
groupId 這個(gè)標(biāo)簽用來(lái)指定這個(gè)項(xiàng)目所屬的公司或者組織, 在這個(gè)例子里, groupId為com.alibaba.base, 表示這個(gè)構(gòu)件是屬于alibaba基礎(chǔ)模塊的. 這個(gè)屬性通常與artifaceId一起共同標(biāo)識(shí)一個(gè)構(gòu)件
artifactId 指定這個(gè)構(gòu)件的名稱, 這個(gè)例子里面是ftpserver, 在生成的最終文件中,這里的artifactId將作為文件名的一部分出現(xiàn), 標(biāo)準(zhǔn)的文件命名格式為<artifactId>-<version>.<extension>,  這個(gè)例子就是ftpserver-1.0.jar
packaging 用來(lái)指定打包類型,比如JAR, WAR, EAR等, 如果不指定那么默認(rèn)是JAR, 這里的不僅僅可以指定打包類型,也可以指定為一個(gè)特定的生命周期作為整個(gè)build過(guò)程的一部分, 關(guān)于這一部分我們將來(lái)再詳細(xì)討論.
version 制定項(xiàng)目版本, 這里版本多了一個(gè)SNAPSHOT的概念, 作用域開(kāi)發(fā)過(guò)程, 在后面會(huì)詳細(xì)介紹如何使用SNAPSHOT來(lái)進(jìn)行協(xié)作開(kāi)發(fā).
name 制定項(xiàng)目名稱, Maven在根據(jù)項(xiàng)目生成文檔的時(shí)候會(huì)用到這個(gè)標(biāo)簽屬性
url 指定這個(gè)項(xiàng)目的站點(diǎn)地址, Maven在根據(jù)項(xiàng)目生成文檔的時(shí)候會(huì)用到這個(gè)標(biāo)簽屬性
description 項(xiàng)目的描述信息, Maven在根據(jù)項(xiàng)目生成文檔的時(shí)候會(huì)用到這個(gè)標(biāo)簽屬性
 

下面我們看一下生成的項(xiàng)目目錄樹(shù):

ftpserver

|-- pom.xml

`-- src

    |-- main

    |   `-- java

    |       `-- com

    |           `-- alibaba

    |               `-- ftpserver

    |                   `-- App.java

    `-- test

        `-- java

            `-- com

                `-- alibaba

                    `-- ftpserver

                        `-- AppTest.java

 

 

創(chuàng)建模板項(xiàng)目
上面我們創(chuàng)建了一個(gè)基本項(xiàng)目, 現(xiàn)在我們介紹一下如何創(chuàng)建一個(gè)模板項(xiàng)目, 比如我們要?jiǎng)?chuàng)建一個(gè)spring的項(xiàng)目, 僅僅上面的步驟是不夠的, 那么Maven有這樣的模板替你做了很多項(xiàng)目配置的事情, 下面就讓我們看看如何操作, 很簡(jiǎn)單只要把create換成generate就可以了, 還是創(chuàng)建一個(gè)名為ftpserver的spring項(xiàng)目:

mvn archetype:generate
-DarchetypeGroupId=org.apache.maven.archetypes  -DgroupId=com.alibaba.base
-DartifactId=ftpserver

在命令行下回車以后我們可以看到以下提示:

     ……

Choose archetype:

1: internal -> appfuse-basic-jsf (AppFuse archetype for creating a web applicati

on with Hibernate, Spring and JSF)

2: internal -> appfuse-basic-spring (AppFuse archetype for creating a web applic

ation with Hibernate, Spring and Spring MVC)

3: internal -> appfuse-basic-struts (AppFuse archetype for creating a web applic

ation with Hibernate, Spring and Struts 2)

4: internal -> appfuse-basic-tapestry (AppFuse archetype for creating a web appl

ication with Hibernate, Spring and Tapestry 4)

5: internal -> appfuse-core (AppFuse archetype for creating a jar application wi

th Hibernate and Spring and XFire)

6: internal -> appfuse-modular-jsf (AppFuse archetype for creating a modular app

lication with Hibernate, Spring and JSF)

7: internal -> appfuse-modular-spring (AppFuse archetype for creating a modular

application with Hibernate, Spring and Spring MVC)

8: internal -> appfuse-modular-struts (AppFuse archetype for creating a modular

application with Hibernate, Spring and Struts 2)

9: internal -> appfuse-modular-tapestry (AppFuse archetype for creating a modula

r application with Hibernate, Spring and Tapestry 4)

10: internal -> maven-archetype-j2ee-simple (A simple J2EE Java application)

11: internal -> maven-archetype-marmalade-mojo (A Maven plugin development proje

ct using marmalade)

12: internal -> maven-archetype-mojo (A Maven Java plugin development project)

13: internal -> maven-archetype-portlet (A simple portlet application)

14: internal -> maven-archetype-profiles ()

15: internal -> maven-archetype-quickstart ()

16: internal -> maven-archetype-site-simple (A simple site generation project)

17: internal -> maven-archetype-site (A more complex site project)

18: internal -> maven-archetype-webapp (A simple Java web application)

19: internal -> jini-service-archetype (Archetype for Jini service project creat

ion)

20: internal -> softeu-archetype-seam (JSF+Facelets+Seam Archetype)

21: internal -> softeu-archetype-seam-simple (JSF+Facelets+Seam (no persistence)

Archetype)

22: internal -> softeu-archetype-jsf (JSF+Facelets Archetype)

23: internal -> jpa-maven-archetype (JPA application)

24: internal -> spring-osgi-bundle-archetype (Spring-OSGi archetype)

25: internal -> confluence-plugin-archetype (Atlassian Confluence plugin archety

pe)

26: internal -> jira-plugin-archetype (Atlassian JIRA plugin archetype)

27: internal -> maven-archetype-har (Hibernate Archive)

28: internal -> maven-archetype-sar (JBoss Service Archive)

29: internal -> wicket-archetype-quickstart (A simple Apache Wicket project)

30: internal -> scala-archetype-simple (A simple scala project)

31: internal -> lift-archetype-blank (A blank/empty liftweb project)

32: internal -> lift-archetype-basic (The basic (liftweb) project)

33: internal -> cocoon-22-archetype-block-plain ([http://cocoon.apache.org/2.2/m

aven-plugins/])

34: internal -> cocoon-22-archetype-block ([http://cocoon.apache.org/2.2/maven-p

lugins/])

35: internal -> cocoon-22-archetype-webapp ([http://cocoon.apache.org/2.2/maven-

plugins/])

36: internal -> myfaces-archetype-helloworld (A simple archetype using MyFaces)

37: internal -> myfaces-archetype-helloworld-facelets (A simple archetype using

MyFaces and facelets)

38: internal -> myfaces-archetype-trinidad (A simple archetype using Myfaces and

Trinidad)

39: internal -> myfaces-archetype-jsfcomponents (A simple archetype for create c

ustom JSF components using MyFaces)

40: internal -> gmaven-archetype-basic (Groovy basic archetype)

41: internal -> gmaven-archetype-mojo (Groovy mojo archetype)

Choose a number:  (1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/18/19/20/21/22/23/2

4/25/26/27/28/29/30/31/32/33/34/35/36/37/38/39/40/41) 15: :

 

我們可以看到有很多預(yù)定義好的模板項(xiàng)目, 這里我們要?jiǎng)?chuàng)建一個(gè)spring的項(xiàng)目, 選擇2然后回車, 會(huì)出現(xiàn)以下提示:

[INFO] artifact org.appfuse.archetypes:appfuse-basic-spring: checking for update

s from nexus

[INFO] artifact org.appfuse.archetypes:appfuse-basic-spring: checking for update

s from central

Define value for version:  1.0-SNAPSHOT: :

細(xì)心的讀者可能會(huì)注意到Maven會(huì)從nexus本地倉(cāng)庫(kù)獲取插件的更新,前提是要建立起自己的本地倉(cāng)庫(kù), 之前的文章中我們已經(jīng)講過(guò)如何建立nexus本地倉(cāng)庫(kù). 粗體部分是給的提示說(shuō)你的項(xiàng)目的起始版本, 它給出一個(gè)默認(rèn)值1.0-SNAPSHOT, 通常如果沒(méi)有特殊需求,我們可以根據(jù)默認(rèn)規(guī)則回車確認(rèn)就可以了, 你也可以輸入自定義的版本,但并不推薦這么做.回車后會(huì)看到以下提示:

Define value for version:  1.0-SNAPSHOT: :

Confirm properties configuration:

groupId: com.alibaba.base

artifactId: ftpserver

version: 1.0-SNAPSHOT

package: com.alibaba.base

Y: :

Maven會(huì)給出項(xiàng)目的相關(guān)信息讓你確認(rèn), 如果沒(méi)有錯(cuò)誤,直接回車確認(rèn)即可, 然后你就可以看到Maven在努力的刷屏幫你建立起一個(gè)spring項(xiàng)目, 在最后如果你可以看到類似的信息,那說(shuō)明項(xiàng)目已經(jīng)創(chuàng)建成功:

[INFO] OldArchetype created in dir: D:\work\projects\test\ftpserver

[INFO] ------------------------------------------------------------------------

[INFO] BUILD SUCCESSFUL

[INFO] ------------------------------------------------------------------------

[INFO] Total time: 69 minutes 48 seconds

[INFO] Finished at: Fri Jun 26 11:45:52 CST 2009

[INFO] Final Memory: 9M/127M

[INFO] ------------------------------------------------------------------------

粗體部分提示, 項(xiàng)目成功構(gòu)建.

然后我們來(lái)看看,這次的POM文件與上次有什么不同, Maven生成了一個(gè)700行左右的POM文件, 里面幾乎包含了一個(gè)項(xiàng)目所應(yīng)該有的一切, 構(gòu)建, 自動(dòng)單元測(cè)試, 構(gòu)件依賴, 報(bào)表(站點(diǎn)), 數(shù)據(jù)庫(kù)連接, SCM, 等等, 我們可以根據(jù)實(shí)際需要來(lái)選擇我們所需要的項(xiàng)目周期管理, 由于代碼太多這里就不貼出來(lái)了. 在后面的POM文件詳解里面, 我會(huì)介紹一下POM文件一些常用的標(biāo)簽以及如何使用.

 

下面我們?cè)倏匆幌履夸浗Y(jié)構(gòu)有什么不同:

ftpserver

|-- pom.xml

`-- src

    |-- main

    |   `-- java

    |       `-- com

    |           `-- alibaba

    |               `-- ftpserver

|                   `-- App.java

|    -- resources

|    -- webapp

|-- site

    `-- test

    |   `-- java

    |       `-- com

    |            `-- alibaba

    |                `-- ftpserver

|                    `-- AppTest.java

|    -- resources

 

我們可以看到, 多了粗體部分site是Maven為項(xiàng)目生成站點(diǎn), 所有的報(bào)表都將生成在這個(gè)站點(diǎn)里面, 在resources目錄里還會(huì)有很多資源文件, 比如多語(yǔ)言的資源文件等. 這是根據(jù)默認(rèn)規(guī)則建立的項(xiàng)目目錄結(jié)構(gòu),當(dāng)然你可以自定義目錄結(jié)構(gòu),但是我們推薦在將來(lái)的項(xiàng)目中使用maven的默認(rèn)規(guī)則.

 

關(guān)于Maven的生命周期管理, 我們會(huì)在后面章節(jié)討論.

通過(guò)IDE(IDEA)來(lái)創(chuàng)建項(xiàng)目
如果你是通過(guò)命令行方式創(chuàng)建的項(xiàng)目, 要在IDE(eclipse, 或者Intellij IDEA)上開(kāi)發(fā), 只需要通過(guò)簡(jiǎn)單的命令就可以生成eclipse或者IDEA的項(xiàng)目文件:

mvn idea:idea

mvn eclipse:eclipse

之后只需要運(yùn)行對(duì)應(yīng)的工程文件就可以在IDE里面進(jìn)行后續(xù)的開(kāi)發(fā)工作了.

 

如果你不喜歡使用命令行, 那么你也可以在IDE里面通過(guò)圖形化的界面來(lái)創(chuàng)建項(xiàng)目,, IDEA內(nèi)部集成了對(duì)Maven的支持, 如果使用eclipse的話你還需要下載m2e插件. 下面我們以IDEA為例來(lái)創(chuàng)建之前例子中的項(xiàng)目:

File->new project, 然后選擇第一項(xiàng) Create project from scratch, 點(diǎn)擊下一步可以看到:
 左下角選擇Maven Module, 填寫目錄相關(guān)信息, 點(diǎn)擊下一步


這里有一個(gè)復(fù)選框, Create from archetype, 如果不選則是創(chuàng)建基本項(xiàng)目, 在復(fù)選框上面打勾, 然后就可以選擇你想要?jiǎng)?chuàng)建項(xiàng)目的類型, 這里我們選擇跟之前那個(gè)例子一樣的類型: appfuse-basic-spring, 點(diǎn)擊Finish就完成了項(xiàng)目的創(chuàng)建.
通過(guò)命令行和IDE生成的項(xiàng)目的POM文件和目錄結(jié)構(gòu)是一樣的:


小結(jié)
通過(guò)這一章,我們了解到如何通過(guò)Maven根據(jù)我們的需要?jiǎng)?chuàng)建項(xiàng)目, 命令行方式和IDE方式, 通過(guò)命令行的方式不受操作系統(tǒng)的限制, 可以在沒(méi)有界面的Linux等操作系統(tǒng)進(jìn)行生命周期管理, 這在項(xiàng)目后期,我們需要通過(guò)命令行方式在測(cè)試服務(wù)器, 預(yù)發(fā)布服務(wù)器和生產(chǎn)環(huán)境服務(wù)器進(jìn)行相應(yīng)的生命周期管理. IDE方式適合在項(xiàng)目建立初期和開(kāi)發(fā)過(guò)程中, 可以很方便的通過(guò)界面的方式來(lái)管理項(xiàng)目的生命周期. 下面的章節(jié), 我會(huì)詳細(xì)介紹POM文件以及Maven生命周期.

 

本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/arvinzhuo/archive/2009/06/26/4301280.aspx

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
maven自定義骨架的過(guò)程,已經(jīng)使用詳解
Maven常用命令
AppFuse QuickStart - Chinese - AppFuse 2 -?Co...
第三課 -- maven基于骨架自動(dòng)生成項(xiàng)目
使用 AppFuse 的七個(gè)理由
怎么 1 秒完成 Maven 項(xiàng)目構(gòu)建?(來(lái)長(zhǎng)長(zhǎng)見(jiàn)識(shí))
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服