欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java的項(xiàng)目構(gòu)建工具M(jìn)aven的配置和使用教程

 更新時(shí)間:2016年05月16日 14:51:13   作者:pastqing  
Maven是Java世界中的項(xiàng)目管理和構(gòu)建自動(dòng)化工具,基于POM項(xiàng)目對(duì)象模型的思想,下面我們就具體來看一下具體的Java的項(xiàng)目構(gòu)建工具M(jìn)aven的配置和使用教程:

一、Maven是什么

Maven是一個(gè)用java開發(fā)的項(xiàng)目構(gòu)建工具, 它能使項(xiàng)目構(gòu)建過程中的編譯、測(cè)試、發(fā)布、文檔自動(dòng)化, 大大減輕了程序員部署負(fù)擔(dān)。

二、安裝Maven

安裝maven非常簡(jiǎn)單,訪問Maven官方頁下載即可:http://maven.apache.org/download.cgi
下載完后配置M2_HOME環(huán)境變量, 然后終端運(yùn)行mvn --version, 看到正確的輸出提示,Maven就安裝完成了。

三、Maven基本概念
Maven的核心思想是POM, 即Project Object Model(項(xiàng)目對(duì)象模型)。POM文件是以XML文件的形式描述一個(gè)Maven項(xiàng)目所用到的資源(源碼、依賴、測(cè)試等)。下圖描述了POM文件的結(jié)構(gòu), 以及Maven是如何調(diào)用POM文件的。

2016516144053273.png (571×419)

當(dāng)執(zhí)行一條Maven命令時(shí), 會(huì)傳入一個(gè)pom文件, Maven會(huì)在該pom里面的描述的資源上執(zhí)行

POM文件:

<project xmlns="http://maven.apache.org/POM/4.0.0"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
           http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <!-- The Basics -->
 <groupId>...</groupId>
 <artifactId>...</artifactId>
 <version>...</version>
 <packaging>...</packaging>
 <dependencies>...</dependencies>
 <parent>...</parent>
 <dependencyManagement>...</dependencyManagement>
 <modules>...</modules>
 <properties>...</properties>
 <!-- Build Settings -->
 <build>...</build>
 <reporting>...</reporting>
 <!-- More Project Information -->
 <name>...</name>
 <description>...</description>
 <url>...</url>
 <inceptionYear>...</inceptionYear>
 <licenses>...</licenses>
 <organization>...</organization>
 <developers>...</developers>
 <contributors>...</contributors>
 <!-- Environment Settings -->
 <issueManagement>...</issueManagement>
 <ciManagement>...</ciManagement>
 <mailingLists>...</mailingLists>
 <scm>...</scm>
 <prerequisites>...</prerequisites>
 <repositories>...</repositories>
 <pluginRepositories>...</pluginRepositories>
 <distributionManagement>...</distributionManagement>
 <profiles>...</profiles>
</project>

modelVersion是POM模型版本, 4.0.0支持Maven2和3
Maven Coordinates(Maven坐標(biāo))

(1)groupId: 它是一個(gè)組織或者項(xiàng)目的唯一ID, 大多數(shù)情況下會(huì)使用項(xiàng)目的java包的根名作為groupID, 例如com.pastqing

(2)artifactId:它是正在構(gòu)建的項(xiàng)目名稱, 例如一個(gè)支付系統(tǒng)artifactId是web-pay。artifactId 是Maven倉庫中g(shù)roupId目錄下的子目錄名

(3)version:顧名思義項(xiàng)目發(fā)行的版本號(hào)

以上三項(xiàng)都是構(gòu)建結(jié)果名稱的一部分, 在項(xiàng)目構(gòu)建后會(huì)生成一個(gè)jar包,位于Maven倉庫的路徑就是MAVEN_REPO/com/pastqing/web-pay/1.0/web-pay-1.0.jar

四、一個(gè)用Maven構(gòu)建的Hello World java項(xiàng)目

利用Maven插件archetype構(gòu)建一個(gè)項(xiàng)目:
在終端中打開工作目錄
運(yùn)行命令:

mvn archetype:generate

, 第一次運(yùn)行時(shí)比較慢,原因是第一次需要從Maven中央倉庫中下載相關(guān)項(xiàng)目原型。下載完畢后,會(huì)選擇項(xiàng)目模型,以及輸入groupId, artifactId,version等,構(gòu)建完畢后會(huì)有成功提示。
打包項(xiàng)目:切換到項(xiàng)目根目錄,運(yùn)行mvn package。打包成功之后,項(xiàng)目會(huì)生成一個(gè)target文件夾,里面有生成好的jar文件和class文件。
運(yùn)行jar文件:

java -cp target/helloWorld-1.0-SNAPSHOT.jar com.pastqing.App

至此一個(gè)最簡(jiǎn)單Maven構(gòu)建的java項(xiàng)目就完成了。

五、一個(gè)用Maven構(gòu)建的java-web項(xiàng)目

生成一個(gè)web項(xiàng)目與生成java項(xiàng)目基本類似,只是用的模型不同而已。這里不再闡述。下面我們具體說說如何使用Tomcat或者jetty插件運(yùn)行web項(xiàng)目。這里我們以tomcat舉例。

Maven Tomcat插件安裝:  http://tomcat.apache.org/maven-plugin-2.2/ 
我們將如下插件信息加入到web項(xiàng)目中的POM文件中

<plugin>
  <groupId>org.apache.tomcat.maven</groupId>
  <artifactId>tomcat6-maven-plugin</artifactId>
  <version>2.2</version>
</plugin>
<plugin>
  <groupId>org.apache.tomcat.maven</groupId>
  <artifactId>tomcat7-maven-plugin</artifactId>
  <version>2.2</version>
</plugin>

這樣我們集成了這個(gè)tomcat的Maven插件, 只需要一個(gè)命令就可以部署、啟動(dòng)服務(wù)了。命令如下:

mvn tomcat:run

(tomcat6)

mvn tomcat7:run

(tomcat7)

使用tomcat Maven插件自動(dòng)部署到外部tomcat
以上自動(dòng)部署,會(huì)使用Maven內(nèi)嵌的Tomcat, 下面我們修改POM文件, 讓項(xiàng)目部署到外部的Tomcat中。

修改項(xiàng)目POM文件,添加服務(wù)器配置信息

<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
  <url>http://localhost:8080/manager/text</url>
  <server>tomcat7</server>
  <username>admin</username>
  <password>admin</password>
</configuration>
</plugin>

其中server, username, password的值與%Maven_HOME中的setting.xml中的server, username, password一一對(duì)應(yīng)。

啟動(dòng)外部tomcat, 運(yùn)行命令mvn tomcat7:redeploy

六、如何用Maven構(gòu)建多模塊項(xiàng)目

1.父POM

所有的Maven pom文件都繼承自一個(gè)父POM, 如果沒有指定父pom, 則該pom文件繼承自根POM。pom文件的集成關(guān)系如下圖所示:

2016516144339869.png (319×300)

可以讓一個(gè)pom文件顯式地繼承另一個(gè)pom文件。這樣,可以通過修改公共父pom文件的設(shè)置來修改所有子pom文件的設(shè)置。這里我們使用parent標(biāo)簽來定義父pom。下面我們具體搭建一個(gè)多模塊Mavne項(xiàng)目

2.構(gòu)建項(xiàng)目目錄結(jié)構(gòu)

我們創(chuàng)建一個(gè)maven-web項(xiàng)目, 名字叫EducationCloud, 接下來我們?cè)陧?xiàng)目目錄下創(chuàng)建幾個(gè)文件夾用來劃分我們的模塊。它們分別是Education-parent(父模塊), Education-core(業(yè)務(wù)), Education-entity(實(shí)體), Education-web(web服務(wù))

2016516144358618.jpg (1976×534)

目錄的劃分可以根據(jù)需要進(jìn)行, 我的劃分如上

3.修改pom文件

我們用module標(biāo)簽來進(jìn)行劃分模塊。打開根目錄下的pom文件, 添加moudle標(biāo)簽。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.EducationCloud</groupId>
  <artifactId>EducationCloud</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>pom</packaging>
  <modules>
    <module>Education-parent</module>
    <module>Education-core</module>
    <module>Education-entity</module>
    <module>Education-web</module>
  </modules>
  <name>EducationCloud</name>
</project>

這里我們說下packaging標(biāo)簽:最常見的就是打包為jar, war了。任何一個(gè)Maven項(xiàng)目都需要定義pom文件中的packaging元素, 如果不聲明該元素, 則默認(rèn)打包為jar, 如果定義值為war那么就打包為war包。如果值為pom,那么什么包都不生成(通常用于父模塊)。

給各個(gè)模塊添加parent標(biāo)簽:
parent標(biāo)簽用來定義父POM的坐標(biāo)位置的, 定義如下:

<parent>
  <groupId>com.EducationCloud</groupId>
  <artifactId>EducationCloud-parent</artifactId>
  <version>1.0-SNAPSHOT</version>
  <relativePath></relativePath>
</parent>

groupId, aritfactId, version是常規(guī)表示父pom位置信息的元素, relativePath是表示父pom位置的相對(duì)路徑, 默認(rèn)為../pom.xml, 這里需要注意的是groupId, aritfactId, version必須與父pom文件中的對(duì)應(yīng)起來

使用dependencyManagement管理項(xiàng)目所有依賴
為了統(tǒng)一管理依賴,我們?cè)诟疙?xiàng)目模塊的pom文件中使用dependencyManagement來聲明項(xiàng)目的所有依賴, 這樣在其他的子項(xiàng)目中引用依賴時(shí)就可以省略版本號(hào)的編寫, 修改起來也很容易。
編寫**父項(xiàng)目模塊**educationCloud-parent的pom文件, 添加如下:
使用pluginManagement管理項(xiàng)目中的Maven插件
為了統(tǒng)一管理項(xiàng)目中的Maven插件, 如Maven編譯插件, 打包插件等及其配置信息, 在父項(xiàng)目 pom文件中添加pluginManagement來管理, 這樣在所有子模塊中引用的插件都會(huì)統(tǒng)一處理, 添加如下:

<pluginManagement>
  <plugins>
  <!-- complile插件的配置 -->
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-complier-plugin</artifactId>
      <version>3.3</version>
      <configuration>
        <source>1.7</source>
        <target>1.7</target>
        <encoding>UTF-8</encoding>
      </configuration>
    <plugin>
  </plugins>
</pluginManagement>

上面我們添加了maven編譯插件的配置,用jdk1.7編譯, 保存后我們可以在各個(gè)子模塊的Effective pom中看到相應(yīng)的修改。

使用properties標(biāo)簽定義常量:
我們將各個(gè)依賴的版本號(hào)定義為不同的常量,這樣方便以后的修改:

<properties>
  <jdkVersion>1.7</jdkVersion>
  <servletVersion>3.1.0</servletVersion>
  <mysqlVersion>5.1.34</mysqlVersion>
  <junitVersion>4.12</junitVersion>
  <defaultEncoding>UTF-8</defaultEncoding>
</properties>

引用時(shí)用${jdkVersion}的形式引用即可。

注,以上操作均可在IDE中操作, 更加方便簡(jiǎn)單。

相關(guān)文章

  • 詳解Mybatis通用Mapper介紹與使用

    詳解Mybatis通用Mapper介紹與使用

    目前通用mapper只支持對(duì)單表的操作,對(duì)單表的增刪改查,無需在mapper.xml寫對(duì)應(yīng)的sql語句,只需要我們調(diào)用相應(yīng)的接口,對(duì)于快速開發(fā)極為方便,感興趣的小伙伴們可以參考一下
    2018-06-06
  • 簡(jiǎn)單了解JavaCAS的相關(guān)知識(shí)原理

    簡(jiǎn)單了解JavaCAS的相關(guān)知識(shí)原理

    這篇文章主要介紹了簡(jiǎn)單了解JavaCAS的相關(guān)知識(shí),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • 使用Spring啟動(dòng)時(shí)運(yùn)行自定義業(yè)務(wù)

    使用Spring啟動(dòng)時(shí)運(yùn)行自定義業(yè)務(wù)

    這篇文章主要介紹了使用Spring啟動(dòng)時(shí)運(yùn)行自定義業(yè)務(wù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • JDK 5 提供的注解:Target、Inherited和Documented的區(qū)別

    JDK 5 提供的注解:Target、Inherited和Documented的區(qū)別

    這篇文章主要介紹了JDK 5 提供的注解:Target、Inherited和Documented的區(qū)別,需要的朋友可以參考下
    2016-02-02
  • SpringBoot?項(xiàng)目中創(chuàng)建線程池

    SpringBoot?項(xiàng)目中創(chuàng)建線程池

    這篇文章主要介紹了SpringBoot?項(xiàng)目中創(chuàng)建線程池,文章基于Spring?Boot項(xiàng)目創(chuàng)建線程池ThreadPoolExecutor,需要的小伙伴可以參考一下
    2022-04-04
  • Java中雙冒號(hào)(::)運(yùn)算操作符用法詳解

    Java中雙冒號(hào)(::)運(yùn)算操作符用法詳解

    這篇文章主要給大家介紹了關(guān)于Java中雙冒號(hào)(::)運(yùn)算操作符用法的相關(guān)資料,雙冒號(hào)運(yùn)算操作符是類方法的句柄,lambda表達(dá)式的一種簡(jiǎn)寫,這種簡(jiǎn)寫的學(xué)名叫eta-conversion或者叫η-conversion,需要的朋友可以參考下
    2023-11-11
  • SpringBoot上傳圖片到指定位置并返回URL的實(shí)現(xiàn)

    SpringBoot上傳圖片到指定位置并返回URL的實(shí)現(xiàn)

    本文主要介紹了SpringBoot上傳圖片到指定位置并返回URL,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下<BR>
    2022-03-03
  • spring中的FactoryBean代碼示例

    spring中的FactoryBean代碼示例

    這篇文章主要介紹了spring中的FactoryBean代碼示例,涉及FactoryBean的實(shí)現(xiàn)等相關(guān)內(nèi)容,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-10-10
  • Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(54)

    Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(54)

    下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧,希望可以幫到你
    2021-08-08
  • SpringBoot項(xiàng)目為何引入大量的starter?如何自定義starter?

    SpringBoot項(xiàng)目為何引入大量的starter?如何自定義starter?

    這篇文章主要介紹了SpringBoot項(xiàng)目為何引入大量的starter?如何自定義starter?文章基于這兩個(gè)問題展開全文,需要的小伙伴可以參考一下
    2022-04-04

最新評(píng)論