閱讀246 返回首頁    go 阿裏雲 go 技術社區[雲棲]


《maven實戰》讀書筆記3——maven使用入門

說明

由於我目前所做的項目皆是java web項目,因此整個係統學習的過程也就以java web為基礎。

maven項目結構

根據maven約定,一個比較標準的maven java web項目,結合eclipse通常可以看到結構如下:

src/main/java            java主要代碼存放目錄
src/main/resources       java配置文件存放目錄
src/test/java            java測試代碼存放目錄
JRE System Library       jre中的一些jar包映射
Maven Dependencies       根據pom.xml配置的依賴而導入的jar包映射
src/main/webapp          web相關的文件,如html等
src/test                 這個目錄暫時還沒用過
target                   maven項目輸出目錄,例如生成多的war包
pom.xml                  maven項目最重要的一個文件

pom.xml文件說明

pom.xml文件格式

pom.xml文件是maven項目的靈魂所在,一個標準的pom.xml文件格式大概如下:

<?xml version="1.0" encoding="UTF-8"?\>
<project xmlns="https://maven.apache.org/POM/4.0.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"\>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.cmupay</groupId>
    <artifactId>cmupay-coresys</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    <name>cmupay-coresys</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

pom.xml節點說明

這個文件中,首先是xml格式說明,接下來是pom.xml文件中的父節點<project>

project

project是pom.xml文件中的父節點(或者說根元素),節點中有一些屬性配置,這些屬性可以說不是必須的,但是一般都會寫上,有了這些配置可以使一些工具更容易解析和編輯pom.xml文件,例如使用eclipse編輯。

modelVersion

<modelVersion>指定了pom文件模板的版本,根據我的理解,和<project>中的屬性涉及到的版本應該一致。需要注意的是,對於maven2和maven3來說,隻能是4.0.0。

groupId、artifactId及version

這三個元素可以說是pom.xml中最重要的元素,他們三個決定了當前maven項目的坐標唯一性,貌似可以理解成三維坐標的x、y、z三個坐標,然後決定了一個確定的點。
其中<groupId>指定當前項目所屬的組,一般可能就填寫公司的網址,由於網址的唯一性,這個就不會重複,相當於三維坐標中從x軸定位;
<artifactId>指定了當前項目在當前組中的唯一ID,通常都是填寫的項目名,同一個公司可能有多個項目,但不同項目有不同的編號和名稱,相當於在三維坐標確定的x坐標位置再確定y坐標;
實際開發過程中,經常是以迭代的形式進行,因此不同的項目就會有很多個不同的版本,單獨用項目名也不能確定項目的唯一性,通過<version>指定項目版本,再結合前邊兩項,就能保證項目坐標的唯一性,這樣在maven不同項目間的依賴上就能通過配置準確的獲取配置的依賴項。

packaging

這裏主要是指定項目打包時是生成什麼形式的壓縮包,例如通常web項目會填寫“war”。

name和description

因為項目名稱有時候可能並不能很好的表達該項目做什麼,因此name元素可以用來聲明一個更加友好的名稱,同樣的description是更加詳細的項目描述。

properties

maven項目基礎屬性配置,通常會配置項目構建的字符集編碼,輸出,也就是打包文件的字符集以及jdk版本等。

dependencies

這裏主要是項目依賴的配置,也就是通常所說的jar包配置,一個<dependencies>裏邊可以有很多個<dependency>元素,而<dependency>裏邊就是實際依賴包的配置,配置的原理實際上就是上邊描述過的項目坐標,通過<groupId><artifactId><version>確定唯一的jar包。
當有了上述三個配置後,maven就會自動下載相應的jar包,至於具體是去哪裏下載,就要涉及到一些其他的配置了,後續熟悉過程中再進一步說明。
<dependency>裏邊還有一個屬性是<scope>,指的是作用範圍,如果是“test”,說明隻在測試的時候生效,如果沒有配置這個值,默認是"compile",表示對主代碼和測試代碼都生效。

build

build裏邊通常是對maven構建項目過程中需要用到的maven插件進行配置,例如上述例子中指定編譯插件版本。
在實際使用過程中,我發現當配置了<properties>中的jdk版本後,似乎不需要再在這裏配置maven編譯插件版本也可以,具體細節可能還需要在後續熟悉的過程中進一步了解。

最後更新:2017-11-07 18:03:56

  上一篇:go  搭建無線WiFi,最需要關心什麼?
  下一篇:go  高可用架構-- MySQL主從複製的配置