Maven pom.xml 添加本地jar包依賴以及打包方法

来源:https://www.cnblogs.com/strugglion/archive/2020/03/17/12513956.html
-Advertisement-
Play Games

Maven項目打包時,如果遇到需要添加本地jar包依賴的時候,可以選擇兩種方法: 1. 安裝到本地倉庫 第一種方法比較常規,適用於需要添加的jar包也是由maven項目導出,含有pom文件的時候。只需要將jar包安裝到本地maven倉庫下,然後添加依賴即可。 (1)安裝到本地倉庫,執行以下命令(其中 ...


Maven項目打包時,如果遇到需要添加本地jar包依賴的時候,可以選擇兩種方法:

1. 安裝到本地倉庫

第一種方法比較常規,適用於需要添加的jar包也是由maven項目導出,含有pom文件的時候。只需要將jar包安裝到本地maven倉庫下,然後添加依賴即可。

(1)安裝到本地倉庫,執行以下命令(其中的-Dfile/-DgroupId/-DartifactId/-Dversion項根據pom文件內容填寫):

mvn install:install-file -Dfile=xxxxx.jar -DgroupId=xxx.xxx.xxx -DartifactId=xxxxx -Dversion=1.0.0 -Dpackaging=jar

(2)安裝之後可以在本地倉庫中找到對應的jar包。然後將對應的依賴信息插入到工程的pom文件即可:

<dependency>
    <groupId>xxx.xxx.xxx</groupId>
    <artifactId>xxxxx</artifactId>
    <version>1.0.0</version>
</dependency>

 

2. dependency中指定scope="system"和本地jar包路徑

這種方法適用於其他方式導出的jar包,jar包中不含有pom信息,從而無法安裝進本地倉庫的情況。做法是:先配置本地jar包依賴,然後在build時將設置將jar包導出,同時配置manifest。

(1)配置本地jar包依賴(systemPath指向本地jar包路徑):

<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk-s3</artifactId>
    <version>1.11.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/lib/xxx.jar</systemPath>
</dependency>

(2)在<build>的spring-boot-maven-plugin中設置將本地jar包導出到項目最終的依賴庫中:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <includeSystemScope>true</includeSystemScope>
    </configuration>
</plugin>

(3)如果項目使用maven-jar-plugin插件打包的話,還需要在manifectEntries中添加對應的jar包信息;否則雖然jar包導出了,但是項目生成的MANIFEST.MF文件中沒有對應的依賴信息,也會導致運行時找不到對應的class。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
        <archive>
            <manifest>
                <addClasspath>true</addClasspath>
                <classpathPrefix>lib/</classpathPrefix>
                <mainClass>XXXX</mainClass>
            </manifest>
            <manifestEntries>
                <Class-Path>./ lib/xxxxx.jar</Class-Path>
            </manifestEntries>
        </archive>
        <outputDirectory>
            ${project.build.directory}/XXXXX
        </outputDirectory>
    </configuration>
</plugin>

(4)最後附上一個項目完整的<build>配置(該配置可以將最終生成的jar包和依賴庫、配置文件分開)。

<build>
    <finalName>XXXXX</finalName>
    <sourceDirectory>src/main/java</sourceDirectory>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <targetPath>${project.build.directory}/XXXXX</targetPath>
            <excludes>
                <exclude>**/*.java</exclude>
            </excludes>
        </resource>
    </resources>

    <testSourceDirectory>src/test/java</testSourceDirectory>
    <testResources>
        <testResource>
            <directory>src/test/resources</directory>
            <filtering>true</filtering>
            <excludes>
                <exclude>**/*.java</exclude>
            </excludes>
        </testResource>
    </testResources>

    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <includeSystemScope>true</includeSystemScope>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <skipTests>true</skipTests>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
                <execution>
                    <id>copy-dependencies</id>
                    <phase>package</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>
                            ${project.build.directory}XXXXX/lib
                        </outputDirectory>
                    </configuration>
                </execution>
            </executions>
        </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>
                            <mainClass>xxx.xxx.XXXXX</mainClass>
                        </manifest>
                        <manifestEntries>
                            <Class-Path>./ lib/xxxxx.jar</Class-Path>
                        </manifestEntries>
                    </archive>
                    <outputDirectory>
                        ${project.build.directory}/XXXXX
                    </outputDirectory>
                </configuration>
            </plugin>
    </plugins>
</build>

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 100個不同類型的python語言趣味編程題 在求解的過程中培養編程興趣,拓展編程思維,提高編程能力。 第一部分:趣味演算法入門;第六題 問題分析: ​ 牛頓迭代法是取x0之後,在這個基礎上,找到比x0更接近的方程的根,一步一步迭代,從而找到更接近方程的近似根。 ​ 設r是f(x)=0的根,選取x0作 ...
  • 依賴註入 不同數據類型的註入方式 除了通過 setter 註入、構造器註入還可以通過類似的 和 進行註入,具體參看官方文檔的例子,使用 "命名空間註入" Bean 作用域 | Scope | Description | | : | : | | "singleton" | (Default) Scop ...
  • Spring 框架 簡介 Spring框架是由於軟體開發的複雜性而創建的 目的:解決企業應用開發的複雜性 功能:使用基本的JavaBean代替EJB,並提供了更多的企業應用功能 範圍:任何Java應用 優點: 開源的免費的框架(容器) Spring是一個輕量級、非入侵式的框架 控制反轉(IOC)和麵 ...
  • 定義三個方法 1.定義一個獲取數據的getData()方法2.定義一個導出excel表的方法exportSqlServer()3.定義一個獲取類型typeof()的方法,用作查詢出來的數據被識別 下麵直接展示代碼 from datetime import datetime import os imp ...
  • 關於模型: 1:一個模型類對應一個表,模型類中的屬性對應表中的一個欄位 2:欄位類型(資料庫支持的類型) 字元串 1:CharField(Maxlength=長度) models.CharField 2:TextFiled 大文本 3:IntegerField 整數 4:DecimalField(m ...
  • 本文存在[視頻版本][1],請知悉 項目簡介 項目來源於: "https://gitee.com/thuihuang/shine_bookshop" 一個基於 JSP+Servlet+Jdbc 的shine網上書城。涉及技術少,易於理解,適合 JavaWeb初學者 學習使用。 技術棧 編輯器 Ecl ...
  • 有一個這樣的問題:現要用 setuptools 把一個項目打包成 whl 文件,然後 pip install 在 Windows/Linux 兩種操作系統上,但是該項目中有一些依賴庫只有 Windows 上才有(例如 pywinauto、pywingui、pywinrm),那麼問題是,如何實現打包文 ...
  • 基於S2SH開發線上學堂系統(課程學習網站 前臺+後臺) 開發環境: Windows操作系統開發工具:Eclipse+Jdk+Tomcat+MYSQL資料庫運行效果圖 源碼及原文鏈接:https://javadao.xyz/forum.php?mod=viewthread&tid=97 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...