亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

使用Maven管理Java項(xiàng)目

yiliang / 2045人閱讀

摘要:添加的的依賴,可以從項(xiàng)目的中拷貝使用命令編譯項(xiàng)目。在子模塊中我們可以這樣使用引入父模塊坐標(biāo)三使用建立項(xiàng)目新建一個(gè)項(xiàng)目,選擇,如圖所示在中配置插件可參見(jiàn)官方文檔。部署項(xiàng)目到即可。

一、Maven入門 1.下載maven

Maven是基于項(xiàng)目對(duì)象模型(Project Object Model),可以通過(guò)一小段描述信息來(lái)管理項(xiàng)目的構(gòu)建、報(bào)告和文檔的項(xiàng)目管理工具,提供了一個(gè)倉(cāng)庫(kù)的概念,統(tǒng)一管理項(xiàng)目所依賴的第三方j(luò)ar包,最大可能避免了由于環(huán)境變量的不同在不同電腦之間無(wú)法運(yùn)行的問(wèn)題,Struts2、Hibernate都是采用maven部署的項(xiàng)目。它是Apache軟件基金會(huì)的一個(gè)開(kāi)源項(xiàng)目,下載地址是:Apache Maven 注意:Maven3.3要求jdk版本為1.7及以上。將壓縮包解壓到任意目錄:可以看到如下的目錄結(jié)構(gòu):

2.配置Maven環(huán)境

新建環(huán)境變量M2_HOME,其值為maven的解壓目錄,并在path環(huán)境變量中引用M2_HOME下的bin目錄:

shellM2_HOME:D:Program Files (x86)apache-maven-3.3.3

Path:...;%M2_HOME%in

接下來(lái)在命令行輸入mvn -v命令可以查看版本:

3.使用maven創(chuàng)建helloworld項(xiàng)目

首先創(chuàng)建如下的目錄結(jié)構(gòu)

src
    |----main
        |----java
            |----package
    |----test
        |----java
            |----package
    |----resources
pom.xml

main/java目錄下創(chuàng)建我們的java源代碼:

javapackage org.gpf.maventest01.model;

public class HelloWorld {
    public String sayHelloWorld(){
        return  "Hello World!";
    }   
}

test/java目錄下創(chuàng)建我們的測(cè)試代碼(使用了Junit4測(cè)試框架):

javapackage org.gpf.maventest01.model;

import org.junit.*;
import static org.junit.Assert.*;

public class HelloWorldTest {

    @Test
    public void testSayHelloWorld(){
        assertEquals("Hello World!",new HelloWorld().sayHelloWorld());
    }
}

接下來(lái)編寫(xiě)pom.xml(可以參見(jiàn)Struts2,如圖所示)

將其拷貝到項(xiàng)目的根目錄,并修改為如下:

xml



    4.0.0  

    
    org.gpf.maventest01
    maventest01  
    0.0.1SNAPSHOT    

    
    
        
            junit
            junit
            4.10
        
    

接下來(lái)在命令行進(jìn)入我們的項(xiàng)目輸入mvn compile命令(首次運(yùn)行會(huì)下載第三方插件和maven依賴的jar,請(qǐng)耐心等待),對(duì)該項(xiàng)目進(jìn)行編譯。

最后使用mvn test命令運(yùn)行我們的測(cè)試用例:

此時(shí)發(fā)現(xiàn)項(xiàng)目的根目錄下多了一個(gè)target目錄,其中class目錄就是生成的類文件,reports目錄就是一系列測(cè)試報(bào)告。

運(yùn)行mvn package命令可以打包我們的項(xiàng)目,會(huì)生成maventest-0.0.1SNAPSHOT.jar。

二、Maven核心知識(shí) 1.常用構(gòu)建命令
  

mvn -v 查看maven版本
compile 編譯
test 測(cè)試
package 打包
clean 刪除target(字節(jié)碼和測(cè)試報(bào)告)
install 安葬jar包到本地倉(cāng)庫(kù)

如果一個(gè)項(xiàng)目需要利用到其他項(xiàng)目的jar包,一種方式是拷貝jar包并拷貝到classpath中,maven提供了一個(gè)更簡(jiǎn)單的策略,直接在本地倉(cāng)庫(kù)中查找即可。例如我們一個(gè)新的項(xiàng)目maven02項(xiàng)目需要使用到之前的maven01項(xiàng)目的HelloWorld類中的sayHelloWorld方法,使用maven可以這樣:

在maven01項(xiàng)目中運(yùn)行mvn install命令安裝jar包到本地倉(cāng)庫(kù)。

創(chuàng)建maven02項(xiàng)目,在其中導(dǎo)入maven01項(xiàng)目的類。

src/main

javapackage org.gpf.maventest02.util;

import org.gpf.maventest01.model.HelloWorld;

public class Speak {
    public String sayHi(){
        return  new HelloWorld().sayHelloWorld();
    }   
}

src/test

javapackage org.gpf.maventest02.util;

import org.junit.*;
import static org.junit.Assert.*;

public class SpeakTest {

    @Test
    public void testSayHi(){
        assertEquals("Hello World!",new Speak().sayHi());
    }
}

3.在pom.xml添加依賴。

xml



    4.0.0

    org.gpf.maventest02
    maventest02
    0.0.1SNAPSHOT

    
        
            junit
            junit
            4.10
        
        
        
            org.gpf.maventest01
            maventest01
            0.0.1SNAPSHOT
        
    

使用mvn compile命令編譯maven02項(xiàng)目。

2.使用archetype插件自動(dòng)創(chuàng)建符合maven的目錄骨架

方式一:使用mvn archetype:generate根據(jù)提示一步步操作;

方式二:使用mvn archetype:generate -D命令一次性生成全部。

3.maven中的坐標(biāo)和倉(cāng)庫(kù)
  

maven中任何一個(gè)依賴、插件都可以被稱為構(gòu)件。所有構(gòu)件通過(guò)坐標(biāo)作為其唯一標(biāo)識(shí)。

  

倉(cāng)庫(kù)可以管理項(xiàng)目的依賴。倉(cāng)庫(kù)可以分為本地倉(cāng)庫(kù)和遠(yuǎn)程倉(cāng)庫(kù),如果本地倉(cāng)庫(kù)中找不到就會(huì)在遠(yuǎn)程倉(cāng)庫(kù)中查找并下載,如果遠(yuǎn)程倉(cāng)庫(kù)找不到就會(huì)報(bào)錯(cuò)。maven遠(yuǎn)程倉(cāng)庫(kù)的地址可以在maven安裝目錄的lib目錄的maven-model-builder-3.3.3.jar中找到,如圖所示:

pom.xml打開(kāi)。

鏡像倉(cāng)庫(kù)

由于maven的中央倉(cāng)庫(kù)位于國(guó)外,速度慢,也有可能其他原因無(wú)法訪問(wèn),我們可以使用國(guó)內(nèi)的鏡像倉(cāng)庫(kù)。配置鏡像倉(cāng)庫(kù)需要修改conf/settings.xml,打開(kāi)該文件修改mirror標(biāo)簽如下:

xml 
    
      
      maven.net.cn
      central
      central mirror in china
      http://maven.net.cn/content/groups/public
    
  

maven倉(cāng)庫(kù)默認(rèn)是放在用戶目錄的.m2隱藏目錄下的,Windows系統(tǒng)就是C:Users用戶名.m2,我們需要將倉(cāng)庫(kù)遷移到其他目錄,修改conf/settings.xml,如圖所示:

settings.xml復(fù)制到E:/tmp/mavenproject/repo,這樣更新maven就不需要重新配置settings.xml了。

4.在MyEclipse中使用maven

MyEclipse默認(rèn)安裝了maven插件,極大簡(jiǎn)化了操作。在使用MyEclipse創(chuàng)建項(xiàng)目之前需要進(jìn)行如下的配置:

配置maven安裝目錄(自帶的可能有錯(cuò))

給jre添加一個(gè)運(yùn)行時(shí)參數(shù)(錯(cuò)誤-Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable and mvn script match.的解決方案)

使用MyEclipse創(chuàng)建Maven項(xiàng)目的步驟(注意選擇合適的Junit版本,默認(rèn)是3.8.1,我們需要該變成4.10)如下:



接下來(lái)在MyEclipse中運(yùn)行maven項(xiàng)目,右鍵項(xiàng)目名---Run As會(huì)出現(xiàn)如下菜單:

在彈出的的對(duì)話框的Goals中輸入maven命令(compile、test、package等)即可。

5.maven的生命周期和插件

maven有3個(gè)獨(dú)立的階段。

clean(清理)

pre-clean

clean

post-clean

default(構(gòu)建、最核心)

compile

test

package

install

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

pre-site

site(生成項(xiàng)目的站點(diǎn)文檔)

post-site

site-deploy(發(fā)布站點(diǎn)到服務(wù)器)

Maven是基于插件的,我們可以在http://maven.apache.org/plugins/index.html找到合適的插件,例如源代碼打包插件source插件。

編輯pom.xml,配置source插件(可以參見(jiàn)source插件文檔)

xml
  ...
  
        
        
          
          org.apache.maven.plugins
          maven-source-plugin
          2.4
          
          
            
                package
                
                    jar-no-fork
                
            
          
        
      
    
    ...

使用clean package命令,運(yùn)行結(jié)果:

6.pom.xml文件解析
xml

  
  4.0.0

    
  org.gpf.maventest 
  maventest-demo
  0.0.1-SNAPSHOT
  jar

    
  maventest-demo
  http://maven.apache.org
  
  
  
  

  
    UTF-8
  

    
  
    
      junit
      junit
      4.10
      
      test
      
      
        
      
    
  

    
  
    
        
    
  

    
  
    
    
      
        org.apache.maven.plugins
        maven-source-plugin
        2.4
        
            
                package
                
                    jar-no-fork
                
            
        
      
    
  

  
  
  
  
    
  

7.依賴范圍

maven提供了3種classpath(編譯、測(cè)試、運(yùn)行),例如上面的pom.xml的Junit框架的scope屬性為test。http://maven.apache.org/guides/introduction/introduction-to-dependency...上提供了6種依賴范圍:

compile:缺省值,編譯、測(cè)試都有效

provided:編譯,測(cè)試都有效,但是在運(yùn)行時(shí)并不會(huì)加入。例如Servlet API,因?yàn)閃eb容器本身有,如果加入就會(huì)出現(xiàn)沖突。

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

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

system:與本機(jī)相關(guān),可移植性差。

import:導(dǎo)入的依賴范圍,僅適用在dependencyManager中,表示從其他pom導(dǎo)入dependency配置。

8.依賴傳遞

創(chuàng)建3個(gè)maven項(xiàng)目,grandfather、father、son,其中father依賴grandfather,son又依賴father,他們之間構(gòu)成依賴。

例如在Father項(xiàng)目的pom.xml中添加對(duì)GradFather的依賴,只需要在dependency標(biāo)簽中指定GrandFather的坐標(biāo)即可,就像下面這樣:

xml
    
      junit
      junit
      3.8.1
      test
    
    
         com.maventest
        GrandFather
        0.0.1-SNAPSHOT
    

類似的在Son項(xiàng)目中添加對(duì)Father的依賴。現(xiàn)在構(gòu)建Son需要先構(gòu)建GrandFather和Father。對(duì)GrandFather和Father進(jìn)行clean install命令,再對(duì)Son項(xiàng)目進(jìn)行compile命令即可。構(gòu)建完成后3個(gè)項(xiàng)目的目錄結(jié)構(gòu)如圖:

此時(shí)發(fā)現(xiàn)Son依賴了2個(gè)項(xiàng)目GrandFather和Father,如果僅僅希望Son依賴Father可以將GrandFather的坐標(biāo)進(jìn)行依賴排除

xml
    
        com.maventest
        Father
        0.0.1-SNAPSHOT
        
            
                com.maventest
                GrandFather
            
        
    

9.依賴沖突

依賴沖突有2條原則:

短路優(yōu)先(優(yōu)先解析路徑短的版本),例如有以下2個(gè)依賴:A-->B-->C-->x.jar,A-->D--x.jar(優(yōu)先)

路徑相同,先聲明先優(yōu)先。

10.聚合與繼承

如果我們的項(xiàng)目要使用到以上的GrandFather、Father、Son3個(gè)模塊,就可以使用聚合。新建一個(gè)relationship項(xiàng)目,修改其pom.xml如下:


  4.0.0

  com.maventest
  relationship
  0.0.1-SNAPSHOT

  pom

  relationship
  http://maven.apache.org

  
    UTF-8
  

  
    
      junit
      junit
      3.8.1
      test
    
  


  
    ../GrandFather
    ../Father
    ../Son
  
```

在relationship項(xiàng)目運(yùn)行`clean install`命令將會(huì)依次生成3個(gè)jar并加入本地倉(cāng)庫(kù)。

在以上的項(xiàng)目中項(xiàng)目中每次都要配置Junit的依賴,我們可以向java編程那樣將公共的模塊抽取出來(lái),這種方式叫做繼承。新建一個(gè)maven項(xiàng)目,命名為common,其`pom.xml`配置如下:

```xml

  4.0.0

  com.maventest.common
  common
  0.0.1-SNAPSHOT
  pom

  common
  http://maven.apache.org

  
    UTF-8
    3.8.1
  


    
    
      junit
      junit
      ${junit-version}
      test
    
  



這是項(xiàng)目可能有紅色的小叉,由于父模塊不需要測(cè)試,我們可以刪除src/test重新更新maven項(xiàng)目(右鍵項(xiàng)目-->Maven ForMyEclipse-->Update Project Configuration),發(fā)現(xiàn)紅色的叉消失。在子模塊中我們可以這樣使用:

xml
  4.0.0

  com.maventest
  GrandFather
  0.0.2-SNAPSHOT
  jar

  GrandFather
  http://maven.apache.org

  
    UTF-8
  



    com.maventest.common
    common
    0.0.1-SNAPSHOT

  
    
      junit
      junit
    
  

三、使用Maven建立Web項(xiàng)目

新建一個(gè)maven項(xiàng)目,ArcheType選擇webapp,如圖所示:


pom.xml中配置tomcat插件(可參見(jiàn)Tomcat官方文檔)。

xml
  4.0.0
  com.maventest.webdemo
  webdemo
  war
  0.0.1-SNAPSHOT
  webdemo Maven Webapp
  http://maven.apache.org
  
    
      junit
      junit
      4.10
      test
    
  

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

clean-->package-->部署項(xiàng)目到Tomcat即可。

四、常見(jiàn)問(wèn)題和解決方案 1.jdk版本不符合的問(wèn)題

Eclipse中的jdk版本顯示為1.5,但是編譯使用的版本是1.7,可以參考以下的conf/settings.xml的配置:

xml
jdk-1.7
 
true
1.7 


 
1.7 
1.7 
1.7 
 

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

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

相關(guān)文章

  • Maven就是這么簡(jiǎn)單

    摘要:軟件項(xiàng)目的管理就會(huì)變得簡(jiǎn)單很多。比如說(shuō)的驅(qū)動(dòng)程序,,在是獲取不到的,就需要手工上傳到里是倉(cāng)庫(kù)組,在里沒(méi)有這個(gè)概念,是特有的。 什么是Maven Maven是一個(gè)采用純Java編寫(xiě)的開(kāi)源項(xiàng)目管理工具, Maven采用了一種被稱之為Project Object Model (POM)概念來(lái)管理項(xiàng)目,所有的項(xiàng)目配置信息都被定義在一個(gè)叫做POM.xml的文件中.. Maven是一款跨平臺(tái)的項(xiàng)目...

    leonardofed 評(píng)論0 收藏0
  • maven介紹

    摘要:介紹簡(jiǎn)介編寫(xiě)的用于構(gòu)建系統(tǒng)的自動(dòng)化工具。文件的基本配置介紹什么是,項(xiàng)目對(duì)象模型?;驹O(shè)置協(xié)作關(guān)系組織標(biāo)識(shí),例如,在目錄下,將是目錄。 1. Maven介紹 1.1. 簡(jiǎn)介 java編寫(xiě)的用于構(gòu)建系統(tǒng)的自動(dòng)化工具。 目前版本是2.0.9,注意maven2和maven1有很大區(qū)別,閱讀第三方文檔時(shí)需要區(qū)分版本。 1.2. Maven資源 ? 見(jiàn)官方網(wǎng)站; ? The 5 minu...

    xorpay 評(píng)論0 收藏0
  • Maven 模塊化項(xiàng)目管理

    摘要:一什么是是一款軟件項(xiàng)目管理和理解工具?;陧?xiàng)目對(duì)象模型的概念,通過(guò)添加一小段描述來(lái)管理項(xiàng)目的構(gòu)建。另外如果子模塊中指定了版本號(hào),那么會(huì)使用子模塊中指定的版本。 一、什么是Maven? Maven是一款軟件項(xiàng)目管理和理解工具?;陧?xiàng)目對(duì)象模型(POM)的概念,通過(guò)添加一小段描述來(lái)管理項(xiàng)目的構(gòu)建。 二、為什么要使用Maven? 以前在用Java開(kāi)發(fā)一個(gè)項(xiàng)目時(shí),往往需要引入幾十或者上百個(gè)Ja...

    ethernet 評(píng)論0 收藏0
  • Maven 項(xiàng)目構(gòu)建基礎(chǔ)

    摘要:項(xiàng)目構(gòu)建基礎(chǔ)從屬于筆者的現(xiàn)代開(kāi)發(fā)基礎(chǔ)系列文章,介紹了的歷史背景與多種構(gòu)建工具對(duì)比,以及的基本配置安裝與使用本文涉及的參考資料聲明在學(xué)習(xí)與實(shí)踐資料索引以及學(xué)習(xí)與資料索引。 Maven 項(xiàng)目構(gòu)建基礎(chǔ)從屬于筆者的現(xiàn)代 Java 開(kāi)發(fā)基礎(chǔ)系列文章,介紹了 Maven 的歷史背景與多種構(gòu)建工具對(duì)比,以及 Maven 的基本配置安裝與使用;本文涉及的參考資料聲明在 Java 學(xué)習(xí)與實(shí)踐資料索引以及...

    2501207950 評(píng)論0 收藏0
  • Maven實(shí)戰(zhàn)之Quick Start

    摘要:在之前,十個(gè)項(xiàng)目可能有十種構(gòu)建方式,但通過(guò),所有項(xiàng)目的構(gòu)建命令都是簡(jiǎn)單一致的。有利于促進(jìn)項(xiàng)目團(tuán)隊(duì)的標(biāo)準(zhǔn)化。手工勞動(dòng)往往意味著低效,意味著容易出錯(cuò)。這在很大程度上消除了重復(fù)。默認(rèn)情況下,該文件夾下放置了本地倉(cāng)庫(kù)。學(xué)習(xí)實(shí)戰(zhàn)許曉斌著 Introduction Maven是一個(gè)異常強(qiáng)大的構(gòu)建工具,能夠幫我們自動(dòng)化構(gòu)建過(guò)程,從清理、編譯、測(cè)試到生成報(bào)告,再到打包和部署。通過(guò)Maven,我們只需要...

    Yi_Zhi_Yu 評(píng)論0 收藏0

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

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<