1. 程式人生 > 其它 >5. maven pom檔案中常用的標籤

5. maven pom檔案中常用的標籤

maven pom檔案中常用的標籤

通過pom檔案可以對maven進行設定,其中有一些常用的標籤我們來一起看一下:

packaging  【這個要懂啊】

下面的groupId,artifactId,version之前有說過了,這裡就不再解釋了,其中有個packaging標籤,該標籤的作用是指定maven打包的方式,有三個選項:

  • pom

    該方式主要是管理maven專案的,裡面不放原始碼,用於繼承或聚合的maven模組中

  • war

    會將專案打成war包,對於web專案來說,通常會設定為war

  • jar

    打成jar包,對於普通java專案來說,通常會設定為jar

      <groupId
    >com.monkey1024</groupId> <artifactId>19mavenweb</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging>

dependency  【裝Maven 那個連結的】

我們要使用的jar包的gav資訊放到這裡,這樣maven就可以自動下載相關jar包了。 

 

scope  【dependency 除了 裝 gav 之外 還裝這個 scope 引數如下:】

在dependency標籤下有一個scope標籤,該標籤的作用是可以設定依賴在專案的使用階段,通常來說,專案包含:編譯、執行、測試、打包這些不同的階段。

  • compile

    是預設值,適用於所有階段,編譯、執行、測試、打包都會包含到專案中。

  • test

    只在測試時使用,用於編譯和執行測試程式碼,不會隨專案釋出, 例如junit,如果不修改junit依賴中的scope,我們只能在test目錄下使用junit相關類。

  • runtime

    只在執行時使用,例如mysql的JDBC驅動依賴,我們在編寫程式碼的時候使用java.sql包下的類即可,在執行的時候才會用到該依賴,適用執行和測試階段。

  • provided

    編譯、執行階段使用,打包時不會包含該依賴,例如servlet.jar,這個包在tomcat容器中已經提供了,因此打包時servlet.jar 無需包含在專案中。

  • system

    類似provided,需要顯式提供包含依賴的jar的路徑(使用systemPath標籤),Maven不會在倉庫中查詢它。使用較少

systemPath  【注意 它也是放在dependency 裡, 一般都不會這樣幹 可以下載何樂而不為呢?】

引入非本地倉庫中的jar包,有時候我們需要使用一些jar包,但是這些jar在maven倉庫中並不存在,此時可以使使用下面方式引用,以log4j為例:

<dependency>
  <groupId>org.apache</groupId>
  <artifactId>log4j</artifactId>
  <version>1.2.17</version>
  <scope>system</scope>
  <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/log4j-1.2.17.jar</systemPath>
</dependency>

但是 要加配置:如果這樣引入非本地參考的jar包時在使用maven打包時是不會將該jar打包入專案中的【Maven打包不會將這個非本地倉庫的jar包打進去】,所以還需要新增下面內容:

<build>
        <resources>
            <resource>
                <directory>${project.basedir}/lib</directory>
                <targetPath>BOOT-INF/lib/</targetPath>
                <includes>
                    <include>**/*.jar</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <targetPath>BOOT-INF/classes/</targetPath>
            </resource>
        </resources>
</build>

裡面的一些東西 我也看不多懂 因為我暫且還沒用過呢.... 所以 你baidu即可

properties 【我也不懂 後面懂了回來補】

有時候對於同一個技術需要編寫很多個依賴引入相關的jar包,每個依賴中都要填寫版本號,倘若更換版本號的話,修改的地方比較多,所以可以使用properties統一管理版本號,logback-version可以自由命名,通過${}方式進行引用:

<properties>
    <logback-version>1.2.3</logback-version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-core</artifactId>
      <version>${logback-version}</version>
    </dependency>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <version>${logback-version}</version>
    </dependency>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-access</artifactId>
      <version>${logback-version}</version>
    </dependency>

1.內建屬性

${basedir}表示專案根目錄,即包含pom.xml檔案的目錄

${version}等同於 ${project.version}或者 ${pom.version}表示專案版本