中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Maven Scope的概念及分類說明

發布時間:2021-09-16 23:22:04 來源:億速云 閱讀:173 作者:chen 欄目:大數據

這篇文章主要講解了“Maven Scope的概念及分類說明”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Maven Scope的概念及分類說明”吧!

Scope


scope定義了類包在項目的使用階段。項目階段包括: 編譯、運行、測試和發布

Maven Scope的概念及分類說明

分類說明

  1. compile: 默認scope為compile,表示為當前依賴參與項目的編譯、測試和運行階段,屬于強依賴。打包之時,會達到包里去。

  2. test: 該依賴僅僅參與測試相關的內容,包括測試用例的編譯和執行,比如定性的Junit。

  3. runtime: 依賴僅參與運行周期中的使用。一般這種類庫都是接口與實現相分離的類庫,比如JDBC類庫,在編譯之時僅依賴相關的接口,在具體的運行之時,才需要具體的mysql、oracle等等數據的驅動程序。 此類的驅動都是為runtime的類庫。

  4. provided :該依賴在打包過程中,不需要打進去,這個由運行的環境來提供,比如tomcat或者基礎類庫等等,事實上,該依賴可以參與編譯、測試和運行等周期,與compile等同。區別在于打包階段進行了exclude操作。

  5. system :使用上與provided相同,不同之處在于該依賴不從maven倉庫中提取,而是從本地文件系統中提取,其會參照systemPath的屬性進行提取依賴。

  6. import :這個是maven2.0.9版本后出的屬性,import只能在dependencyManagement的中使用,能解決maven單繼承問題,import依賴關系實際上并不參與限制依賴關系的傳遞性。

舉例說runtime

首先要知道Maven中引入的jar包依賴都是已經編譯好的可以直接使用的*.class文件!然后比如 runtime 類型的 java的jdbc鏈接,官方已經提供好連接工具包了。我們在調用的時候一定是通過反射來 加載 好驅動的從而鏈接數據庫。

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.26</version>
    <scope>runtime</scope>
</dependency>

依賴JDBC的demo如下:

package com.sowhat.Demo01;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

//提供獲取連接的方法
public class JDBCUtils {
    
private static Connection conn=null;

    static{
        try {
            Class.forName("com.mysql.jdbc.Driver");
            String url="jdbc:mysql://localhost:3306/goods?characterEncoding=utf-8";
            String username="root";
            String password="123456";
            conn=DriverManager.getConnection(url,username,password);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            throw new RuntimeException(e+"數據庫連接失敗");
        } 
        
    }
    //獲取數據庫連接對象
    public static Connection getConnection(){
        return conn;
    }
    //關閉數據庫的方法
    ....
}

systemPath :

當maven依賴本地而非repository中的jar包,sytemPath指明本地jar包路徑,例如:

<dependency>
    <groupid>org.hamcrest</groupid>
    <artifactid>hamcrest-core</artifactid>
    <version>1.5</version>
    <scope>system</scope>
    <systempath>${basedir}/WebContent/WEB-INF/lib/hamcrest-core-1.3.jar</systempath>
</dependency>

dependency中的type


引入某一個依賴時,必須指定type,這是因為用于匹配dependency引用和dependencyManagement部分的最小信息集實際上是{groupId,artifactId,type,classifier}。在很多情況下,這些依賴關系將引用沒有classifier的jar依賴。這允許我們將標識設置為{groupId,artifactId},因為type的默認值是jar,并且默認classifier為null。 
type的值一般有jar、war、pom等,聲明引入的依賴的類型
 

dependency中的classifier


Classifier可能是最容易被忽略的Maven特性,但它確實非常重要,我們也需要它來幫助規劃坐標。設想這樣一個情況,有一個jar項目,就說是 dog-cli-1.0.jar 吧,運行它用戶就能在命令行上畫一只小狗出來。現在用戶的要求是希望你能提供一個zip包,里面不僅包含這個可運行的jar,還得包含源代碼和文檔,換句話說,這是比較正式的分發包。這個文件名應該是怎樣的呢?dog-cli-1.0.zip?不夠清楚,僅僅從擴展名很難分辨什么是Maven默認生成的構件,什么是額外配置生成分發包。如果能是dog-cli-1.0-dist.zip就最好了。這里的dist就是classifier,默認Maven只生成一個構件,我們稱之為主構件,那當我們希望Maven生成其他附屬構件的時候,就能用上classifier。常見的classifier還有如dog-cli-1.0-sources.jar表示源碼包,dog-cli-1.0-javadoc.jar表示JavaDoc包等等。

classifier它表示在相同版本下針對不同的環境或者jdk使用的jar,如果配置了這個元素,則會將這個元素名在加在最后來查找相應的jar,例如:
 

<classifier>jdk7</classifier>
<classifier>jdk8</classifier>

感謝各位的閱讀,以上就是“Maven Scope的概念及分類說明”的內容了,經過本文的學習后,相信大家對Maven Scope的概念及分類說明這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

濮阳县| 涿州市| 武胜县| 永昌县| 磴口县| 永清县| 子长县| 新余市| 辽源市| 武胜县| 凉山| 繁峙县| 仙桃市| 苗栗市| 鄂托克前旗| 马关县| 兴和县| 东乌珠穆沁旗| 玛曲县| 平谷区| 绥化市| 昆山市| 汝阳县| 星子县| 长丰县| 永清县| 清镇市| 松滋市| 广灵县| 那坡县| 七台河市| 阳东县| 乌审旗| 尖扎县| 灵宝市| 宣汉县| 博野县| 磴口县| 田林县| 台江县| 共和县|