Idea下將Maven項目打成公共依賴jar包


一、場景:

開發中常常遇到多個項目共同依賴某些公共項目的情況

  1. 比如:“二維碼生成-解析包”就同時被內網端和外網端依賴使用;
  2. 再比如:基於Dubbo-RPC的微服務系統,生產者和消費者往往依賴同一批service接口,此時最佳實踐就是將這批接口獨立成maven模塊,打包成sdk包;
  3. 還比如:自定義的Spring-boot-starter;
    共享依賴包可以有效的復用代碼,同時也提高了可維護性。

二、打包方式

  1. 關鍵點在共享依賴包的pom.xml配置文件的兩項;
  2. 快速構建一個空的Spring-boot項目,如果此獨立jar包不需要,不勾選任何功能組件,目錄結構如下:
├─.mvn
│  └─wrapper
└─src
    ├─main
    │  ├─java
    │  │  └─com
    │  │      └─yang
    │  │          └─sdk
    │  └─resources
    └─test
        └─java
            └─com
                └─yang
                    └─sdk

刪掉test、resources目錄和MainClass;添加service目錄已存放共享源碼,此時目錄結構如下:

├─.mvn
│  └─wrapper
└─src
    └─main
        └─java
            └─com
                └─yang
                    └─sdk
                        └─service
  1. 修改pom.xml
    關鍵點在packaging節點聲明本模塊達成jar包,build節點聲明打包的源碼位置
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.yang</groupId>
    <artifactId>sdk</artifactId>
    <version>1.0</version>

    <packaging>jar</packaging>

    <name>sdk</name>
    <description>Demo project for sharing-jar</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <!--
    <dependencies>
        若有需要可以添加依賴
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-core</artifactId>
            <version>7.7.2</version>
        </dependency>
    </dependencies>
    -->

    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.*</include>
                </includes>
                <excludes>
                    <exclude>**/*.java</exclude>
                </excludes>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>
</project>
  1. 上層模塊可以使用GAV坐標,對共享模塊進行依賴,打包父pom即可自動將共享包打入上層模塊中,形成完整的fat-jar。
    若上層模塊和共享模塊不在同一個父pom下,通過maven-install將共享模塊的jar安裝到本地maven-repo和nexus中即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM