成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

關(guān)于Maven

Amos / 2647人閱讀

摘要:之前雖然一直用,但比較依賴(lài)于的。什么是是使用開(kāi)發(fā)的項(xiàng)目構(gòu)建工具,至于它的作用網(wǎng)上相關(guān)的文章數(shù)不勝數(shù),在此也不再累述??偨Y(jié)至此介紹了的基本使用方式,以上的功能在中也有很好的支持。

之前雖然一直用Maven,但比較依賴(lài)于IDE的Maven-Plugins。最近抽了點(diǎn)時(shí)間決定系統(tǒng)得學(xué)習(xí)一下。

什么是Maven

Maven是使用Java開(kāi)發(fā)的項(xiàng)目構(gòu)建工具,至于它的作用網(wǎng)上相關(guān)的文章數(shù)不勝數(shù),在此也不再累述。對(duì)于內(nèi)容如果你看得云里霧里的話,我建議你直接上手使用一下Maven,就能知道它的魅力所在了。簡(jiǎn)而言之,我認(rèn)為Maven在Java項(xiàng)目的開(kāi)發(fā)過(guò)程中完成了以下兩件事情:

統(tǒng)一管理jar

統(tǒng)一開(kāi)發(fā)規(guī)范

安裝

Ubuntu下安裝非常簡(jiǎn)單:

sudo apt-get install maven

終端下mvn -v

Maven home: /opt/maven
Java version: 1.8.0_25, vendor: Oracle Corporation
Java home: /opt/java/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.13.0-44-generic", arch: "amd64", family: "unix"

出現(xiàn)類(lèi)似的信息就說(shuō)明成功了。與上面類(lèi)似Windows下安裝Maven需要配置幾個(gè)環(huán)境變量,在此也不再累述。

使用Maven新建一個(gè)項(xiàng)目

終端下輸入:

mvn archetype:generate


可以看到幾百個(gè)archetype,archetype類(lèi)似于模板,輸入你想生成的模板的編號(hào)。比如最常見(jiàn)的org.apache.maven.archetypes:maven-archetype-webapp是19,然后我們輸入19回車(chē)。接下來(lái)還會(huì)有各種各樣的參數(shù)需要填,這里也作簡(jiǎn)單講解。以國(guó)產(chǎn)優(yōu)秀開(kāi)源項(xiàng)目fastjson為例:

groupId:com.alibaba

arctifactId:fastjson

version:1.1.15

熟悉之后,其實(shí)通過(guò)一條命令來(lái)完成上面的操作:

mvn archetype:generate -DarchetypeArtifactId= maven-archetype-webapp -          DarchetypeGroupId= com.reeco -DarchetypeArtifactId= helloworld -DarchetypeVersion= 1.0-SNAPSHOT

你一定會(huì)奇怪這么長(zhǎng)一串怎么記得住,在類(lèi)Unix中通過(guò)強(qiáng)大的終端功能是可以輕松完成的,輸入mvn archetype:generate -D 按Tab提示,就會(huì)出現(xiàn),然后你只需按照上面的提示輸入幾個(gè)首字母就能補(bǔ)全所有的選項(xiàng)了。

Maven推薦的目錄結(jié)構(gòu)

我直接復(fù)制了官方文檔

PATH ACTIVITY
src/main/java Application/Library sources
src/main/resources Application/Library resources
src/main/filters Resource filter files
src/main/webapp Web application sources
src/test/java Test sources
src/test/resources Test resources
src/test/filters Test resource filter files
src/it Integration Tests (primarily for plugins)
src/assembly Assembly descriptors
src/site Site
LICENSE.txt Project"s license
NOTICE.txt Notices and attributions required by libraries that the project depends on
README.txt Project"s readme

這是我們上面新建的項(xiàng)目目錄結(jié)構(gòu)

└── helloworld
    ├── pom.xml
    ├── src
    │   └── main
    │       ├── resources
    │       └── webapp
    │           ├── index.jsp
    │           └── WEB-INF
    │               └── web.xml

與推薦的相比,我們還需要添加幾個(gè)目錄

src/main/java

src/test/java

src/test/resources

如果你覺(jué)得resources不夠,還可以添加其他的資源文件夾,然后像下面這樣在pom.xml中配置一下


    
        
            .
            src/main/config
        
    

pom.xml

pom.xml是我們需要關(guān)注的重點(diǎn),平時(shí)我們?cè)贗DE里也只需要關(guān)注它。先來(lái)看下我們項(xiàng)目中的pom.xml


  4.0.0
  com.mycompany.helloworld
  helloworld
  war
  1.0-SNAPSHOT
  helloworld Maven Webapp
  http://maven.apache.org
  
    
      junit
      junit
      3.8.1
      test
    
  
  
    helloworld
  

Dependencies

dependencies中每一個(gè)dependency就是我們項(xiàng)目中的一個(gè)依賴(lài),對(duì)應(yīng)一個(gè)Maven項(xiàng)目。我們只要去http://mvnrepository.com/搜索想要的依賴(lài),然后復(fù)制粘貼到pom.xml中即可。
這里還有個(gè)scope屬性,一共有五個(gè)值

cpmpile:默認(rèn)作用域,編譯、測(cè)試、運(yùn)行時(shí)有效

test:測(cè)試時(shí)有效

runtime:測(cè)試、運(yùn)行時(shí)有效

provided:編譯、測(cè)試時(shí)有效

system::與provided類(lèi)似,需要外在提供相應(yīng)得元素

舉幾個(gè)例子說(shuō)明下:

比如我們項(xiàng)目中的JUnit,我們只在測(cè)試時(shí)使用,并不需要包含在最終的項(xiàng)目中,所以設(shè)置為test

Servlet和JSTL我們只需要在編譯、測(cè)試時(shí)使用,運(yùn)行時(shí)由于Servlet容器(比如Tomcat)自帶了Servlet的lib,我們也不必自己提供Servlet,所以設(shè)置為provided

MySQL數(shù)據(jù)庫(kù)的驅(qū)動(dòng),我們并不需要編譯它,只需要在運(yùn)行時(shí)去加載它即可,所以設(shè)置為runtime

Build

除了在上面提到的在build標(biāo)簽里配置resources之外,我們還可以配置plugins,各種plugin提供了一系列非常重要的功能

  
      
        
        org.apache.maven.plugins  
        maven-jar-plugin
        2.5.1
        
            1.7
            1.7
        
        
    

例如上面的plugin指定了項(xiàng)目編譯用的JDK版本為1.7,具體的plugin可以參考這兩篇文章:

http://www.cnblogs.com/crazy-fox/archive/2012/02/09/2343722.html

http://maven.apache.org/plugins/index.html

Lifecycle

Maven一共有9種生命周期:

clean:清理target目錄

validate:驗(yàn)證Maven項(xiàng)目文件

compile:編譯

test:運(yùn)行測(cè)試

package:項(xiàng)目打包

verify:驗(yàn)證包

install:將項(xiàng)目安裝到本地倉(cāng)庫(kù)

site:生成項(xiàng)目站點(diǎn)

deploy:將項(xiàng)目發(fā)布到遠(yuǎn)程倉(cāng)庫(kù)

我們可以通過(guò)mvn<生命周期>的方式運(yùn)行Maven命令,比如常見(jiàn)的

mvn clean install site

Maven允許多個(gè)命令,同時(shí)執(zhí)行三個(gè)生命周期。這里值得一提的是,運(yùn)行任何一個(gè)生命周期,前面的生命周期都會(huì)被執(zhí)行,所以我們一般執(zhí)行

mvn install

就能完成編譯、測(cè)試、打包。我們嘗試著在我們之前的項(xiàng)目中運(yùn)行這個(gè)命令,可以看到目錄結(jié)構(gòu)發(fā)生了變化:

└── helloworld
    ├── pom.xml
    ├── src
    │   └── main
    │       ├── resources
    │       └── webapp
    │           ├── index.jsp
    │           └── WEB-INF
    │               └── web.xml
    └── target
        ├── classes
        ├── helloworld
        │   ├── index.jsp
        │   ├── META-INF
        │   └── WEB-INF
        │       ├── classes
        │       └── web.xml
        ├── helloworld.war
        └── maven-archiver
            └── pom.properties

多了一個(gè)我們用于存放編譯文件的目錄target。那么怎么運(yùn)行這個(gè)項(xiàng)目呢,對(duì)于Java Web項(xiàng)目來(lái)說(shuō),我們可以在build中通過(guò)plugin部署到tomcat下:

      
          
            
            org.apache.tomcat.maven  
            tomcat7-maven-plugin
            2.2
            
        
    

然后:

mvn tomcat7:run-war
setting.xml

setting.xml是Maven全局配置文件,我們可以在里面配置Maven依賴(lài)下載的鏡像和本地倉(cāng)庫(kù)目錄。
我目前使用的是oschina的Maven鏡像,下面的使用說(shuō)明也講解得非常清楚。
http://maven.oschina.net/help.html

總結(jié)

至此介紹了Maven的基本使用方式,以上的功能在IDE中也有很好的支持。Maven當(dāng)然還有很多高級(jí)用法和最佳實(shí)踐,值得我們?nèi)ヌ剿鳌?/p>

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/64662.html

相關(guān)文章

  • Maven核心概念和日常實(shí)踐

    摘要:項(xiàng)目根目錄項(xiàng)目名項(xiàng)目版本號(hào)項(xiàng)目目錄打包的名字二依賴(lài)管理概述通過(guò)在配置依賴(lài)坐標(biāo),會(huì)自動(dòng)幫我們下載依賴(lài)的構(gòu)件。關(guān)于父模塊的依賴(lài)配置注意兩點(diǎn)一般都是通過(guò)來(lái)配置所有依賴(lài)及其版本號(hào),然后子模塊,在自己的文件中聲明依賴(lài)即可,不用再指定版本,以確保統(tǒng)一。 一、Maven 1.1 為什么寫(xiě)Maven 工欲善其事,必先利其器。如今Java相關(guān)開(kāi)發(fā),基本離不開(kāi)Maven、Gradle、MAT、Hudson...

    894974231 評(píng)論0 收藏0
  • Maven 常用技巧總結(jié)

    摘要:用于將集成至標(biāo)準(zhǔn)的構(gòu)建生命周期中,此時(shí)執(zhí)行時(shí)就會(huì)執(zhí)行指定的操作,從而實(shí)現(xiàn)自定義打包。插件的已棄用會(huì)自動(dòng)執(zhí)行生命周期??蓤?zhí)行文件執(zhí)行時(shí)出現(xiàn)亂碼使用生成的可執(zhí)行文件,在中執(zhí)行時(shí)出現(xiàn)亂碼,項(xiàng)目編碼統(tǒng)一為,日志使用框架。得到的是當(dāng)前的絕對(duì)路徑。 「博客搬家」 原地址: 簡(jiǎn)書(shū) 原發(fā)表時(shí)間: 2017-04-06 1. 設(shè)置 Java JDK 的版本為「JDK 1.8」 可以修改 pom.x...

    niceforbear 評(píng)論0 收藏0
  • MyBatis-Plus初步

    摘要:是最流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)之一,在應(yīng)用方面,是最好的,關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)應(yīng)用軟件。是一種關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),關(guān)系數(shù)據(jù)庫(kù)將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個(gè)大倉(cāng)庫(kù)內(nèi),這樣就增加了速度并提高了靈活性。 本章主要是對(duì)MyBatis-Plus的初步介紹,包括一些背景知識(shí)、環(huán)境搭建、初步使用等知識(shí)和例子。對(duì)于背景知識(shí),主要包含對(duì)MyBatis-Plus的特性介紹、為什么使用MyB...

    娣辯孩 評(píng)論0 收藏0
  • Java 實(shí)戰(zhàn)開(kāi)發(fā)之開(kāi)發(fā)工具安裝及項(xiàng)目創(chuàng)建(四)

    摘要:一環(huán)境配置配置版本配置版本安裝,然后對(duì)其進(jìn)行配置。然后繼續(xù)下面的命令打開(kāi)服務(wù)打開(kāi)瀏覽器,輸入回車(chē)之后如果看到,表示已經(jīng)成功運(yùn)行命令可以關(guān)閉。四配置選擇我們的我的之前是,現(xiàn)在用下面的方法刪除,使用來(lái)進(jìn)行開(kāi)發(fā)。 一、IDEA環(huán)境配置 1、配置jdkConfigure => Project Default => Project structjdk版本:1.7.0 showImg(https:...

    劉福 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<