1. 程式人生 > 實用技巧 >Maven中pom檔案詳解

Maven中pom檔案詳解

在IDE中使用Maven

IDE工具

  • MyEclipse

    整合maven外掛

  • Eclipse

​ Eclipse For Java EE

  • IDEA

    整合Maven外掛

    在IDE中

    配置Maven

    • 指定maven安裝目錄和配置檔案
    • 自動更新maven專案:勾選import projects automatically (2020版本 :Ctrl + Shift + O)

建立Maven專案

new Module——>Maven——>勾選Create from archetype

執行maven操作

Maven projects顯示所有maven專案

執行生命週期

如果不想單獨執行,就點選maven框裡的Execute Maven Goal(在run maven的右邊)

也能自定義新增一個maven操作組合

如果main檔案下沒有resources檔案就建立一個,test檔案下也是一樣的

目錄的型別與更改型別

在IDEA中目錄是分型別的,常營的4中:

  • Sources Root 主程式碼的目錄:src/main/java

  • Test Sources Root 測試程式碼的目錄:src/test/java

  • Resources Root 主程式碼所需資源的目錄:src/main/resources

  • Test Resources Root測試程式碼所需資源的目錄:src/test/resources

    注:在IDEA中預設建立的目錄都是普通的Directory,建立後需要設定目錄的型別

可以在檔案右鍵 Mark Directory As中更改

Maven中pom.xml檔案詳解

簡介

pom:project object model專案物件模型

pom.xml是Maven的核心配置檔案

一個Maven專案有且只有一個pom.xml檔案,該檔案必須在專案的跟目錄下

座標

什麼是座標

用來唯一的標識每個專案,必須為專案定義座標,座標必須唯一

目的是為了讓其他的Maven專案可以使用該專案生成的jar包

座標詳解

Maven座標是通過一些元素來定義:groupId(組織的ID)、artifactId、version

groupId(組織的ID):表示當前模組所屬於的專案

artifactId:模組的ID

version:當前的版本

<groupId>org.example</groupId>
  <artifactId>maven-project</artifactId>
  <version>1.0-SNAPSHOT</version>

dependency

基本配置

如何查詢一個jar包的座標

https://search.maven.org/或者:https://maven.aliyun.com/mvn/view(maven.aliyun.com/nexus)

查詢mysql-connector

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>

<!--   mysql jar包-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.22</version>
    </dependency>
  </dependencies>

scope作用域

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

取值 含義 舉例
compile 該依賴可以在整個專案中使用,參與打包部署,預設值 commons-fileupload
test 該依賴只能在測試程式碼中使用,並且不參與打包部署的 junit
provided 該依賴編寫原始碼時需要,不參與打包部署 servlet-api、jsp-api
runtime 該依賴編寫程式碼時不需要,執行時需要,參與打包部署 mysql-connector
system 表示使用本地系統路徑下的jar包,需要和一個systemPath一起使用 ojdbc.jar

使用本地jar包(放在自己建立的lib檔案下,與src同級):

<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>8.0.22</version>
  <systemPath>${basedir}/lib/mysql-connector-java-8.0.17.jar</systemPath>
</dependency>

properties

全域性屬性,一般情況下同於定義全域性的jar包的版本

作用:比如在properties中定義版本<ljy.version>4.3.12</ljy.version>

那麼在對於的依賴下新增${ljy.version}

在properties中改了 後面對應的依賴版本也跟著改了(方便)

在依賴的version中alt+ctrl+v(快速提取)

如:

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <maven.compiler.source>1.7</maven.compiler.source>
  <maven.compiler.target>1.7</maven.compiler.target>
  <mysql-connector-java.version>8.0.22</mysql-connector-java.version>
</properties>

   <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>${mysql-connector-java.version}</version>
    </dependency>

repositories

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

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

spring為例:url 是spring官方地址

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

plugin(配置外掛)

配置外掛,是一種工具

格式:

<build>
  <plugins>
    <plugin>
      <groupId>xxxx</groupId>
      <artifactId>zzzz</artifactId>
      <version>zzzz</version>
    </plugin>
  </plugins>
</build>
<build>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
        <plugins>
            <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
            <plugin>
                <artifactId>maven-clean-plugin</artifactId>
                <version>3.1.0</version>
            </plugin>
              </plugins>
        </pluginManagement>
    </build>

超級POM

所有的pom.xml檔案都繼承了父POM,這個父POM稱為超級POM(Super POM),你看不見也改不了,但是在myeclipse軟體中能看見