Maven使用詳解視頻課程——筆記(二)

視頻課程鏈接:http://edu.51cto.com/course/13014.html

六、pom.xml文件

1. 簡介

​ pom:project object model 項目對象模型

​ pom.xml是Maven的核心配置文件

一個Maven項目有且只有一個pom.xml文件,該文件必須在項目的根目錄下

2.座標

2.1 什麼是座標

​ 用來唯一的標識每個標識,必須爲項目定義座標,座標必須唯一

​ 目的是爲了讓其他Maven項目可以使用該項目生成的jar包

2.2 座標詳解

​ Maven座標是通過一些元素來定義:groupId、artifactId、version

<!--
        座標:
            groupId:組織Id,表示當着模塊所隸屬的項目
            artifactId:模塊id
            version:當前的版本
-->
<groupId>com.itany.study</groupId>
<artifactId>maven01</artifactId>
<version>1.0-SNAPSHOT</version>

3.dependency

3.1 基本配置

​ 如何查找一個jar包的座標?

http://search.maven.org/http://mvnrepository.com/ 或http://maven.aliyun.com/nexus/#

<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>5.1.38</version>
</dependency>

<dependency>
  <groupId>commons-fileupload</groupId>
  <artifactId>commons-fileupload</artifactId>
  <version>1.3.1</version>
</dependency>

<dependency>
  <groupId>log4j</groupId>
  <artifactId>log4j</artifactId>
  <version>1.2.17</version>
</dependency>

3.2 scope作用域

​ 表示依賴的作用域,用來配置依賴的jar包可使用的範圍

取值 含義 舉例
compile 該依賴可以在整個項目中使用,參與打包部署,默認值 commons-fileupload
test 該依賴只能在測試代碼中使用,不參與打包部署 junit
provided 該依賴編寫源代碼時需要,不參與打包部署 servlet-api、jsp-api
runtime 該依賴編寫代碼時不需要,運行時需要,參與打包部署 mysql-connector
system 表示使用本地系統路徑下的jar包,需要和systemPath一起使用 ojdbc.jar

4. properties

​ 全局屬性,一般情況下用於定義全局的jar包版本

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <fileupload.version>1.3.1</fileupload.version>
  <junit.version>4.12</junit.version>
  <mysql-connector-java.version>5.1.38</mysql-connector-java.version>
  <spring.version>4.3.12.RELEASE</spring.version>
</properties>

<dependencies>
  <!-- junit -->
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>${junit.version}</version>
    <scope>test</scope>
  </dependency>
</dependencies>  

5.repositories

​ 用來配置當前工程使用的遠程倉庫

​ 依賴查找順序:本地倉庫——>當前工程pom.xml中配置的遠程倉庫——>setting.xml中配置的遠程倉庫

 <!-- 配置遠程倉庫 -->
<repositories>
  <!-- 有些最新的jar包,可能在中央倉庫上並沒有提供,此時可以使用jar包官方提供的倉庫 -->
  <repository>
    <id>spring_repo</id>
    <url>http://repo.spring.io/milestone</url>
  </repository>
</repositories>

6.plugins

​ 配置插件,是一種工具

  • maven-clean-plugin
  • maven-compile-plugin
<!-- maven-clean-plugin-->
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-clean-plugin</artifactId>
  <version>2.6.1</version>
</plugin>
<!-- tomcat插件 -->
<plugin>
  <groupId>org.apache.tomcat.maven</groupId>
  <artifactId>tomcat7-maven-plugin</artifactId>
  <version>2.2</version>
  <configuration>
    <path>/maven01</path>
    <port>8888</port>
  </configuration>
</plugin>

7.超級POM

​ 所有的pom.xml文件都繼承一個父POM,這個父POM稱爲超級POM(Super POM、Effective POM)

七、Maven中的關係

1.繼承

​ 一個Maven項目可以繼承自另一個Maven項目,分爲稱爲子項目、父項目

​ 場景:多個子項目中使用的是相同的依賴或插件,此時可以把相同的配置抽取到一個父項目中,進行統一的管理,保持一致性

​ 步驟:

  1. 將父項目的打包方式設置爲pom

     <!--
       打包方式:
         jar:Java項目的打包方式,默認值
         war:Web項目的打包方式
         pom:父項目的打包方式
     -->
     <packaging>pom</packaging>
  2. 在子項目中引用父項目,指定父項目的座標

    <!-- 引用父項目,指定父項目的座標 -->
    <parent>
     <groupId>com.itany.study</groupId>
     <artifactId>parent</artifactId>
     <version>1.0-SNAPSHOT</version>
     <!-- 指定父項目的pom.xml文件的相對物理路徑 -->
     <relativePath>../parent/pom.xml</relativePath>
    </parent>

​ 問題:有時並不是父項目的所有依賴都需要被子項目繼承,但是又希望能夠通過父項目對依賴進行統一管理,如版本的控制

​ 解決:使用dependencyManagement

​ 步驟:

  1. 在父項目中配置dependencyManagement
  2. 在子項目中引用父項目中的依賴

2.聚合

​ 將多個子項目添加到一個父項目中,然後通過能父項目進行操作,從而實現對所有聚合的子項目的操作

<!-- 聚合子項目,指定子項目的根目錄-->
<modules>
  <module>../child01</module>
  <module>../child02</module>
</modules>

3.依賴

​ 項目C——>項目B——>項目A

​ 概念:如果項目C依賴於項目B,項目B依賴項目A,則項目C也依賴於項目A,這叫依賴的傳遞

​ 配置依賴關係:child03——>child02——>child01

3.1 控制依賴的傳遞

​ 並不是所有的依賴都會被傳遞:

  • scope爲compile的依賴會被傳遞

  • scope爲test的依賴不會被傳遞

  • 配置optional爲true的依賴不會被傳遞

    <dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <optional>true</optional>
    </dependency>

3.2 不會出現jar包的衝突

​ 使用maven不會jar包衝突,通過兩個原則來保證:

  • 就近原則

    child03——>child02——>child01

  • 優先定義原則

    child03——>child02——>child01

    ​ ——>child04

3.3 不要傳遞的依賴

​ 方式1:在依賴的項目中配置不允許傳遞

<optional>true</optional>

​ 方式2:在當前項目中配置不接收傳遞的特定依賴

<!-- 依賴於child01-->
<dependency>
  <groupId>com.itany.study</groupId>
  <artifactId>child01</artifactId>
  <version>1.0-SNAPSHOT</version>
  <!-- 不接收特定的依賴 -->
  <exclusions>
    <exclusion>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
    </exclusion>
  </exclusions>
</dependency>

八、Maven Web項目

​ 步驟:

  1. 修改web.xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
            version="3.1">
    
    </web-app>
  2. 配置pom.xml

    <dependencies>
     <!-- Java EE -->
     <dependency>
       <groupId>javax.servlet</groupId>
       <artifactId>javax.servlet-api</artifactId>
       <version>3.1.0</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>javax.servlet.jsp</groupId>
       <artifactId>jsp-api</artifactId>
       <version>2.2</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>jstl</groupId>
       <artifactId>jstl</artifactId>
       <version>1.2</version>
     </dependency>
    
    </dependencies>
    
    <build>
     <finalName>maven02</finalName>
     <!-- tomcat插件 -->
     <plugins>
       <plugin>
         <groupId>org.apache.tomcat.maven</groupId>
         <artifactId>tomcat7-maven-plugin</artifactId>
         <version>2.2</version>
         <configuration>
           <path>/</path>
           <port>8888</port>
         </configuration>
       </plugin>
     </plugins>
    </build>

九、使用Nexus搭建Maven私服

1. 爲什麼要搭建私服

​ 公司不提供外網給開發人員,無法使用maven訪問遠程倉庫,此時可以在局域網內找一臺能訪問外網的電腦搭建maven私服

2. Nexus工具

​ 用來搭建nexus工具

3. 操作步驟

​ 步驟:

  1. 解壓縮並安裝爲系統服務

    nexus-2.14.2-01-bundle\nexus-2.14.2-01\bin\jsw\windows-x86-64\install-nexus.bat
  2. 訪問

    http://localhost:8081/nexus

4. 登陸並配置私服

​ 登陸賬戶和密碼:admin/admin123

​ 1. 添加阿里雲代理(鏡像)倉庫到私服中

​ 2. 添加本地jar到私服中

十、Maven綜合應用

1. 分析

​ 將項目分爲多個工程,可以按層次分,也可以按模塊,或同時按層次和模塊分

​ 以ums爲例,使用maven創建和管理項目:

  • 父工程:ums-parent
  • dao工程:ums-dao
  • sevice工程:ums-service
  • action工程:ums-action

2. 步驟:

2.1 創建工程

2.2 配置依賴

  1. 在父工程中添加依賴
  2. 在子工程中引用依賴

2.3 配置dao工程

​ 映射文件存儲位置,兩種方式:

  • 將映射文件放在resources目錄下

    會被打包部署

  • 將映射文件放在java目錄下

    默認只會對該目錄下的java代碼進行打包部署,如果希望對該目錄下的配置文件也進行打包,需要額外的配置

    <build>
    <!-- 將java目錄下的配置文件也進行打包 -->
    <resources>
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.xml</include>
          <include>**/*.properties</include>
        </includes>
        <filtering>false</filtering>
      </resource>
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>**/*.xml</include>
          <include>**/*.properties</include>
        </includes>
        <filtering>false</filtering>
      </resource>
    </resources>
    </build>

2.4 配置service工程

2.5 配置action工程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章