91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

springboot怎么結合maven實現多模塊打包

發布時間:2023-05-06 16:42:27 來源:億速云 閱讀:119 作者:iii 欄目:開發技術

今天小編給大家分享一下springboot怎么結合maven實現多模塊打包的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

    我們平時在開發系統時,一般我們的系統工程會被分為多個模塊,一個原因是方便協同開發,系統間解耦,另外一個很重要的原因是:別的系統需要依賴我們系統的部分功能,我們可能將這部分功能劃分到一個模塊里面,單獨打包提供給對方。現在我將通過一個示例工程來演示如何借助maven完成springboot應用的多模塊打包的操作。

    要點:

    1、工程存在多個模塊,模塊間有依賴關系

    2、父工程維護工程的主版本號,子模塊直接引用父工程定義的版本號的變量

    3、借助flatten-maven-plugin插件完成子模塊pom文件中引用的父工程變量的替換工作

    1、 工程結構

    test工程結構

    test
    --test-api
      --src
        --main
      --pom.xml
    --test-core
      --src
        --main
          --java
          --resouce
        --test
    --pom.xml

    其中test-api模塊為共用模塊,test-core模塊依賴test-api模塊。后續也會有其他系統依賴test-api模塊,因此需要將test-api模塊發布到maven私服。

    2、工程模塊pom文件配置

    2.1、父模塊pom配置

    <?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.2.6.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
    
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>org.example</groupId>
        <artifactId>test</artifactId>
        <version>${revision}</version>
        <packaging>pom</packaging>
        <modules>
            <module>test-api</module>
            <module>test-core</module>
        </modules>
    
        <properties>
            <maven.compiler.source>8</maven.compiler.source>
            <maven.compiler.target>8</maven.compiler.target>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <revision>1.0.0</revision>
        </properties>
       <!--發布到遠程倉庫的配置-->
        <distributionManagement>
            <repository>
                <id>releases</id>
                <name>releases</name>
                <url>http://192.168.1.1/repository/releases/</url>
            </repository>
    
            <snapshotRepository>
                <id>snapshots</id>
                <url>http://192.168.1.1/repository/snapshots/</url>
            </snapshotRepository>
    
        </distributionManagement>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>flatten-maven-plugin</artifactId>
                    <version>1.4.1</version>
                    <configuration>
                    </configuration>
                    <executions>
                        <!-- enable flattening -->
                        <execution>
                            <id>flatten</id>
                            <phase>process-resources</phase>
                            <goals>
                                <goal>flatten</goal>
                            </goals>
                        </execution>
                        <!-- ensure proper cleanup -->
                        <execution>
                            <id>flatten.clean</id>
                            <phase>clean</phase>
                            <goals>
                                <goal>clean</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    
    
    </project>

    父模塊很重要的一個配置就是flatten-maven-plugin這個插件,用于打包時替換子模塊中pom文件的引用的父工程的變量,比如revision變量。如果不添加此插件,雖然打包時不會報錯,但是別的系統引用test-api.jar的時候,會出現類似Could not find artifact org.example:test:pom:${revision} in nexus-aliyun 的錯誤,主要原因就是子模塊中引用的父工程的變量未被替換導致的

    2.2、test-api模塊配置

    <?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.example</groupId>
            <artifactId>test</artifactId>
            <version>${revision}</version>
            <relativePath>../pom.xml</relativePath>
        </parent>
    
        <artifactId>test-api</artifactId>
    
        <properties>
            <maven.compiler.source>8</maven.compiler.source>
            <maven.compiler.target>8</maven.compiler.target>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>
    
        <dependencies>
    
        </dependencies>
    
    </project>

    test-api模塊的pom文件指定父工程時,version參數用變量表示,方便對版本號的維護。后續升級系統的版本號,只需要修改父工程中的revision變量即可。打包時,子模塊pom文件中的revision會被替換成revision的真實值,此處打包后jar包里的pom文件的{revision}會被替換成revision的真實值,此處打包后jar包里的pom文件的revision會被替換成revision的真實值,此處打包后jar包里的pom文件的{revision}會被替換成1.0.0

    2.3、test-core模塊配置

    <?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.example</groupId>
            <artifactId>test</artifactId>
            <version>${revision}</version>
            <relativePath>../pom.xml</relativePath>
        </parent>
    
        <artifactId>test-core</artifactId>
    
        <properties>
            <maven.compiler.source>8</maven.compiler.source>
            <maven.compiler.target>8</maven.compiler.target>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <!--跳過部署,執行deploy時不將本模塊部署到倉庫-->
            <maven.deploy.skip>true</maven.deploy.skip>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.example</groupId>
                <artifactId>test-api</artifactId>
                <version>${revision}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
        </dependencies>
    
    </project>

    test-core模塊直接依賴test-api模塊,通過revison參數動態引用父工程中指定的版本號。將test&minus;core打包后,test&minus;core.jar包中的pom文件中的{revison}參數動態引用父工程中指定的版本號。將test-core打包后,test-core.jar包中的pom文件中的revison參數動態引用父工程中指定的版本號。將test&minus;core打包后,test&minus;core.jar包中的pom文件中的{revision}會被替換成revision參數的實際值1.0.0

    3、工程打包

    3.1、執行打包

    (1)進入test工程根目錄,比如我所在工程根目錄路徑是D:\ideaProject\test,

    若執行下述命令,

    mvn clean install

    test-api模塊和test-core模塊都會被打包進本地倉庫。

    (2)如果執行下述命令,test-api模塊會被部署到遠程倉庫,而test-core模塊則不會被部署到遠程倉庫。

    mvn clean deploy

    (3)如果只想打包test-api模塊到本地倉庫,或者只想把test-api模塊部署到遠程倉庫,可以進入test-api模塊的主目錄,比如D:\ideaProject\test\test-api,執行下述命令

    #只安裝到本地倉庫
    
    mvn clean install
    
    #部署到遠程倉庫(該命令會先把包安裝到本地倉庫)
    
    mvn clean deploy

    3.2、打包效果

    已test-api為例,打包后的test-api-1.00.jar文件中的pom.xml文件內容如下所示

    <?xml version="1.0" encoding="UTF-8"?>
    <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <modelVersion>4.0.0</modelVersion>
      <groupId>org.example</groupId>
      <artifactId>test-api</artifactId>
      <version>1.0.0</version>
      <licenses>
        <license>
          <name>Apache License, Version 2.0</name>
          <url>https://www.apache.org/licenses/LICENSE-2.0</url>
        </license>
      </licenses>
    </project>

    可以發現,里面引入的父工程的變量已經被成功替換。

    以上就是“springboot怎么結合maven實現多模塊打包”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

    向AI問一下細節

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

    AI

    榆树市| 盖州市| 望谟县| 汤阴县| 新晃| 康定县| 射阳县| 沭阳县| 广南县| 巴东县| 图木舒克市| 余江县| 衡南县| 林周县| 酒泉市| 陵川县| 闵行区| 宣城市| 榆树市| 武清区| 调兵山市| 称多县| 深州市| 察哈| 旬邑县| 桐柏县| 集安市| 罗甸县| 通河县| 徐闻县| 玛沁县| 颍上县| 甘洛县| 潞城市| 泗洪县| 娄底市| 改则县| 乐亭县| 开原市| 来宾市| 全州县|