国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

香港云服务器
服務器之家 - 編程語言 - JAVA教程 - Java的項目構建工具Maven的配置和使用教程

Java的項目構建工具Maven的配置和使用教程

2020-04-29 12:04pastqing JAVA教程

Maven是Java世界中的項目管理和構建自動化工具,基于POM項目對象模型的思想,下面我們就具體來看一下具體的Java的項目構建工具Maven的配置和使用教程:

一、Maven是什么

Maven是一個用java開發的項目構建工具, 它能使項目構建過程中的編譯、測試、發布、文檔自動化, 大大減輕了程序員部署負擔。

二、安裝Maven

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

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

Java的項目構建工具Maven的配置和使用教程

當執行一條Maven命令時, 會傳入一個pom文件, Maven會在該pom里面的描述的資源上執行

POM文件:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<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坐標)

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

(2)artifactId:它是正在構建的項目名稱, 例如一個支付系統artifactId是web-pay。artifactId 是Maven倉庫中groupId目錄下的子目錄名

(3)version:顧名思義項目發行的版本號

以上三項都是構建結果名稱的一部分, 在項目構建后會生成一個jar包,位于Maven倉庫的路徑就是MAVEN_REPO/com/pastqing/web-pay/1.0/web-pay-1.0.jar

四、一個用Maven構建的Hello World java項目

利用Maven插件archetype構建一個項目:
在終端中打開工作目錄
運行命令:

?
1
mvn archetype:generate

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

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

至此一個最簡單Maven構建的java項目就完成了。

五、一個用Maven構建的java-web項目

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

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

?
1
2
3
4
5
6
7
8
9
10
<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>

這樣我們集成了這個tomcat的Maven插件, 只需要一個命令就可以部署、啟動服務了。命令如下:

?
1
mvn tomcat:run

(tomcat6)

?
1
mvn tomcat7:run

(tomcat7)

使用tomcat Maven插件自動部署到外部tomcat
以上自動部署,會使用Maven內嵌的Tomcat, 下面我們修改POM文件, 讓項目部署到外部的Tomcat中。

修改項目POM文件,添加服務器配置信息

?
1
2
3
4
5
6
7
8
9
10
11
<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一一對應。

啟動外部tomcat, 運行命令mvn tomcat7:redeploy

六、如何用Maven構建多模塊項目

1.父POM

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

Java的項目構建工具Maven的配置和使用教程

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

2.構建項目目錄結構

我們創建一個maven-web項目, 名字叫EducationCloud, 接下來我們在項目目錄下創建幾個文件夾用來劃分我們的模塊。它們分別是Education-parent(父模塊), Education-core(業務), Education-entity(實體), Education-web(web服務)

Java的項目構建工具Maven的配置和使用教程

目錄的劃分可以根據需要進行, 我的劃分如上

3.修改pom文件

我們用module標簽來進行劃分模塊。打開根目錄下的pom文件, 添加moudle標簽。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?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標簽:最常見的就是打包為jar, war了。任何一個Maven項目都需要定義pom文件中的packaging元素, 如果不聲明該元素, 則默認打包為jar, 如果定義值為war那么就打包為war包。如果值為pom,那么什么包都不生成(通常用于父模塊)。

給各個模塊添加parent標簽:
parent標簽用來定義父POM的坐標位置的, 定義如下:

?
1
2
3
4
5
6
<parent>
  <groupId>com.EducationCloud</groupId>
  <artifactId>EducationCloud-parent</artifactId>
  <version>1.0-SNAPSHOT</version>
  <relativePath></relativePath>
</parent>

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<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編譯, 保存后我們可以在各個子模塊的Effective pom中看到相應的修改。

使用properties標簽定義常量:
我們將各個依賴的版本號定義為不同的常量,這樣方便以后的修改:

?
1
2
3
4
5
6
7
<properties>
  <jdkVersion>1.7</jdkVersion>
  <servletVersion>3.1.0</servletVersion>
  <mysqlVersion>5.1.34</mysqlVersion>
  <junitVersion>4.12</junitVersion>
  <defaultEncoding>UTF-8</defaultEncoding>
</properties>

引用時用${jdkVersion}的形式引用即可。

注,以上操作均可在IDE中操作, 更加方便簡單。

延伸 · 閱讀

精彩推薦
  • JAVA教程Java多線程之多線程異常捕捉

    Java多線程之多線程異常捕捉

    在java多線程程序中,所有線程都不允許拋出未捕獲的checked exception,也就是說各個線程需要自己把自己的checked exception處理掉,通過此篇文章給大家分享J...

    brolanda1712020-01-03
  • JAVA教程詳解Java中super的幾種用法并與this的區別

    詳解Java中super的幾種用法并與this的區別

    這篇文章主要介紹了Java中super的幾種用法并與this的區別,有需要的朋友可以參考一下 ...

    java教程網5152019-10-25
  • JAVA教程Java面向對象的三大特征

    Java面向對象的三大特征

    這篇文章主要給大家結合相關示例介紹了Java面向對象的三大特征:封裝、繼承、多態,非常的實用,有需要的小伙伴可以參考下。 ...

    hebedich2732019-12-21
  • JAVA教程原來Java中有兩個ArrayList

    原來Java中有兩個ArrayList

    原來Java中有兩個ArrayList,本文就帶著大家一起探究Java中的ArrayList,感興趣的小伙伴們可以參考一下 ...

    云聰3962020-03-21
  • JAVA教程Java解析Excel內容的方法

    Java解析Excel內容的方法

    這篇文章主要介紹了Java解析Excel內容的方法,實例分析了java解析excel文件的技巧,具有一定參考借鑒價值,需要的朋友可以參考下 ...

    damaolly1272019-12-12
  • JAVA教程java接口Array介紹

    java接口Array介紹

    這篇文章主要介紹了java接口Array的相關資料,需要的朋友可以參考下 ...

    hebedich3902019-12-03
  • JAVA教程eclipse中自動生成javadoc文檔的方法

    eclipse中自動生成javadoc文檔的方法

    這篇文章主要介紹了eclipse中自動生成javadoc文檔的方法,是實用eclipse開發Java程序時非常實用的技巧,對于進行Java項目開發具有一定的參考借鑒價值,需要的朋...

    shichen20141302019-12-06
  • JAVA教程詳解Java編程中對線程的中斷處理

    詳解Java編程中對線程的中斷處理

    這篇文章主要介紹了Java編程中對線程的中斷處理,特別講解了中斷的時機與中斷狀態的管理,需要的朋友可以參考下 ...

    turkeyzhou4032020-03-02
368
主站蜘蛛池模板: 国产精品久久电影观看 | 日韩一区二区在线观看 | 午夜激情免费看 | 久久综合九色综合欧美狠狠 | 成人一区二区三区 | 成人av高清在线观看 | 亚洲综合欧美 | 黄色tv网站 | 高清一区二区三区 | 精品国产黄a∨片高清在线 成人欧美 | 一区二区三区在线免费播放 | 国产一区二区资源 | 欧美午夜一区 | 欧洲亚洲精品久久久久 | 久久一区| 中文av一区二区 | 精品国产一区二区三区久久久 | 亚洲成人精品在线观看 | 天堂av一区 | 黄色av免费网站 | 国产精品毛片久久久久久久 | 久久久亚洲综合 | 亚洲精品视频一区 | 久久国产精品久久久久久电车 | 五月宗合网 | 国产精品美女久久久久久久久久久 | 青青草久久网 | 亚州男人天堂 | 日韩三级 | 亚洲毛片在线 | 欧美日本精品 | 最新av在线 | 国产精品久久久久无码av | 色在线视频播放 | 亚洲人成网站999久久久综合 | 亚洲欧美日韩国产综合精品二区 | 精品久久久久久亚洲综合网 | 国产精品美女久久久久久免费 | 激情五月综合 | 午夜成人在线视频 | 免费国产视频 |