最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

maven使用systemPath方式加載本地jar的實(shí)現(xiàn)

 更新時(shí)間:2025年06月10日 09:18:22   作者:xixingzhe2  
本文介紹Maven通過systemPath加載本地第三方JAR的方法,需配置依賴和插件以確保打包和運(yùn)行,具有一定的參考價(jià)值,感興趣的可以了解一下

1、背景

在對接第三方廠商時(shí),會(huì)提供對應(yīng)jar,maven公開倉庫上沒有發(fā)布,提供的處理方法。

  • 上傳的公司私服。
  • systemPath方式加載本地jar。

本文要講的就是使用systemPath方式加載本地jar。

2、使用

示例如下

2.1 下載第三方j(luò)ar

jar-local-1.0.0.jar

jar中提供了MyStringUtils.generateUUID方法。

2.2 項(xiàng)目引入

2.2.1 引入依賴

<dependency>
    <groupId>com.ybw</groupId>
    <artifactId>jar-local</artifactId>
    <version>1.0.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/lib/jar-local-1.0.0.jar</systemPath>
</dependency>
  • groupId:此名稱可自定義,com.ybw為自定義的名稱;
  • artifactId:此名稱可自定義,jar-local為自定義的名稱,不過這個(gè)最好與加載的jar(jar-local-1.0.0.jar)名稱保持一致。
  • version:此版本號可自定義,不過好與加載的jar保持一致。
  • scope:使用system。
  • systemPath:本地jar文件你放在系統(tǒng)文件的目錄,${project.basedir}表示項(xiàng)目根目錄。lib和src為同級目錄。

 2.2.2 插件配置

spring boot項(xiàng)目

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>${spring-boot.version}</version>
            <configuration>
                <mainClass>com.ybw.jar.load.local.JarLocalApplication</mainClass>
                <includeSystemScope>true</includeSystemScope>
            </configuration>
            <executions>
                <execution>
                    <id>repackage</id>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

<includeSystemScope>true</includeSystemScope>作用:

代表maven打包時(shí)會(huì)將外部引入的jar包(比如在根目錄下或resource文件下新加外部jar包)打包到項(xiàng)目jar,在服務(wù)器上項(xiàng)目才能運(yùn)行,不加此配置,本地可以運(yùn)行,因?yàn)楸镜乜梢栽賚ib下找到外部包,但是服務(wù)器上jar中是沒有的。

2.2.3 使用本地jar方法

已可以正常使用MyStringUtils.generateUUID()

package com.ybw.jar.load.local.utils;

import com.ybw.jar.local.utils.MyStringUtils;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;

/**
 * 依賴測試
 *
 * @author ybw
 * @version V1.0
 * @className MyStringUtilsTest
 * @date 2022/4/24
 **/
@Slf4j
public class MyStringUtilsTest {

    @Test
    public void print() {
        log.info("{}", MyStringUtils.generateUUID());
    }
}

3、擴(kuò)展(scope屬性)

依賴范圍控制哪些依賴在哪些classpath 中可用,哪些依賴包含在一個(gè)應(yīng)用中。

  • compile (編譯)

compile是默認(rèn)的范圍;如果沒有提供一個(gè)范圍,那該依賴的范圍就是編譯范圍。編譯范圍依賴在所有的classpath中可用,同時(shí)它們也會(huì)被打包。

  • provided (已提供)

provided 依賴只有在當(dāng)JDK 或者一個(gè)容器已提供該依賴之后才使用。例如, 如果你開發(fā)了一個(gè)web 應(yīng)用,你可能在編譯 classpath 中需要可用的Servlet API 來編譯一個(gè)servlet,但是你不會(huì)想要在打包好的WAR 中包含這個(gè)Servlet API;這個(gè)Servlet API JAR 由你的應(yīng)用服務(wù)器或者servlet 容器提供。已提供范圍的依賴在編譯classpath (不是運(yùn)行時(shí))可用。它們不是傳遞性的,也不會(huì)被打包。

  • runtime (運(yùn)行時(shí))

runtime 依賴在運(yùn)行和測試系統(tǒng)的時(shí)候需要,但在編譯的時(shí)候不需要。比如,你可能在編譯的時(shí)候只需要JDBC API JAR,而只有在運(yùn)行的時(shí)候才需要JDBC驅(qū)動(dòng)實(shí)現(xiàn)。

  • test (測試)

test范圍依賴 在一般的編譯和運(yùn)行時(shí)都不需要,它們只有在測試編譯和測試運(yùn)行階段可用。

  • system (系統(tǒng))

system范圍依賴與provided類似,但是你必須顯式的提供一個(gè)對于本地系統(tǒng)中JAR文件的路徑。這么做是為了允許基于本地對象編譯,而這些對象是系統(tǒng)類庫的一部分。這樣的構(gòu)建應(yīng)該是一直可用的,Maven 也不會(huì)在倉庫中去尋找它。如果你將一個(gè)依賴范圍設(shè)置成系統(tǒng)范圍,你必須同時(shí)提供一個(gè)systemPath元素。注意該范圍是不推薦使用的(建議盡量去從公共或定制的 Maven 倉庫中引用依賴)。

  • import(導(dǎo)入)

import 只能在pom文件的<dependencyManagement>中使用,從而引入其他的pom文件中引入依賴,如:在Spring boot 項(xiàng)目的POM文件中,我們可以通過在POM文件中繼承 Spring-boot-starter-parent來引用Srping boot默認(rèn)依賴的jar包,如下:

<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>2.6.7</version>
</parent>

但是,通過上面的parent繼承的方法,只能繼承一個(gè) spring-boot-start-parent。實(shí)際開發(fā)中,用戶很可能需要繼承自己公司的標(biāo)準(zhǔn)parent配置,這個(gè)時(shí)候可以使用 scope=import 來實(shí)現(xiàn)多繼承。代碼如下:

<dependencyManagement>
	 <dependencies>
	     <dependency>
	         <!-- Import dependency management from Spring Boot -->
	         <groupId>org.springframework.boot</groupId>
	         <artifactId>spring-boot-dependencies</artifactId>
	         <version>2.6.7</version>
	         <type>pom</type>
	         <scope>import</scope>
	    </dependency>
	</dependencies>
</dependencyManagement>

通過上面方式,就可以獲取spring-boot-dependencies.2.6.7.pom文件中dependencyManagement配置的jar包依賴。如果要繼承多個(gè),可以在dependencyManagement中添加,如:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.6.7</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

到此這篇關(guān)于maven使用systemPath方式加載本地jar的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)maven 加載本地jar內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • springSecurity自定義登錄接口和JWT認(rèn)證過濾器的流程

    springSecurity自定義登錄接口和JWT認(rèn)證過濾器的流程

    這篇文章主要介紹了springSecurity自定義登陸接口和JWT認(rèn)證過濾器的相關(guān)資料,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • @MapperScan注解與@Mapper注解的使用

    @MapperScan注解與@Mapper注解的使用

    這篇文章主要介紹了@MapperScan注解與@Mapper注解的使用,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 詳解Spring Boot讀取配置文件與配置文件優(yōu)先級

    詳解Spring Boot讀取配置文件與配置文件優(yōu)先級

    這篇文章主要介紹了詳解Spring Boot讀取配置文件與配置文件優(yōu)先級,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-08-08
  • Java 和 Scala 如何調(diào)用變參

    Java 和 Scala 如何調(diào)用變參

    這篇文章主要介紹了Java 和 Scala 如何調(diào)用變參,幫助大家更好的理解和學(xué)習(xí)Java與Scala,感興趣的朋友可以了解下
    2020-09-09
  • Java如何獲取List<String>中的String詳解

    Java如何獲取List<String>中的String詳解

    工作了這么長時(shí)間了,一直沒有記錄的習(xí)慣,以至于導(dǎo)致我即便是查過的東西總會(huì)忘記,下面這篇文章主要給大家介紹了關(guān)于Java如何獲取List<String>中String的相關(guān)資料,需要的朋友可以參考下
    2022-02-02
  • Java如何生成隨機(jī)數(shù)不了解下嗎

    Java如何生成隨機(jī)數(shù)不了解下嗎

    我們在學(xué)習(xí) Java 基礎(chǔ)時(shí)就知道可以生成隨機(jī)數(shù),可以為我們枯燥的學(xué)習(xí)增加那么一丟丟的樂趣,本文就來和大家介紹Java生成隨機(jī)數(shù)的常用方法,需要的可以參考下
    2023-08-08
  • Java中Tuple的功能及使用詳解

    Java中Tuple的功能及使用詳解

    Java中的Tuple是一種非常有用的數(shù)據(jù)結(jié)構(gòu),它可以讓開發(fā)者在處理多個(gè)數(shù)據(jù)元素時(shí)更加方便和高效,通過Tuple,我們可以將多個(gè)變量打包成一個(gè)對象,從而減少了代碼量,提高了代碼可讀性,這篇文章主要介紹了Java中Tuple的功能及使用場景,需要的朋友可以參考下
    2024-01-01
  • spring中向一個(gè)單例bean中注入非單例bean的方法詳解

    spring中向一個(gè)單例bean中注入非單例bean的方法詳解

    Spring是先將Bean對象實(shí)例化之后,再設(shè)置對象屬性,所以會(huì)先調(diào)用他的無參構(gòu)造函數(shù)實(shí)例化,每個(gè)對象存在一個(gè)map中,當(dāng)遇到依賴,就去map中調(diào)用對應(yīng)的單例對象,這篇文章主要給大家介紹了關(guān)于spring中向一個(gè)單例bean中注入非單例bean的相關(guān)資料,需要的朋友可以參考下
    2021-07-07
  • Java實(shí)現(xiàn)數(shù)據(jù)庫圖片上傳與存儲(chǔ)功能

    Java實(shí)現(xiàn)數(shù)據(jù)庫圖片上傳與存儲(chǔ)功能

    在現(xiàn)代的Web開發(fā)中,上傳圖片并將其存儲(chǔ)在數(shù)據(jù)庫中是常見的需求之一,本文將介紹如何通過Java實(shí)現(xiàn)圖片上傳,存儲(chǔ)到數(shù)據(jù)庫的完整過程,希望對大家有所幫助
    2025-03-03
  • JAVA 對接騰訊云直播的實(shí)現(xiàn)

    JAVA 對接騰訊云直播的實(shí)現(xiàn)

    這篇文章主要介紹了JAVA 對接騰訊云直播的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06

最新評論

九江市| 安福县| 花垣县| 广河县| 南投市| 吉林省| 娄烦县| 汉沽区| 富源县| 永川市| 佛学| 普兰县| 环江| 怀化市| 耒阳市| 莱西市| 开阳县| 左云县| 竹山县| 沿河| 信宜市| 阳新县| 碌曲县| 东宁县| 夏河县| 鸡泽县| 通辽市| 全南县| 建阳市| 资阳市| 蒲江县| 禄丰县| 盐亭县| 石棉县| 襄城县| 高雄县| 永平县| 阳新县| 泰顺县| 宁强县| 黎平县|