Idea Maven項目打包工其他項目進行外部引用


1、說明

我們在日常項目開發中經常會有許多公共的模塊,如統一的父工程、工具類模塊、中間實體類(DTO, VO),如果我們針對每個子項目都單獨的創建一套工具類,多個子項目會存在很多重復的工具類、中間實體類代碼。因此,我們可以將這些公共模塊統一打成jar包,在各子項目中引入depency依賴即可。

 

2、將父工程打包成jar包

創建一個maven工程,統一管理各種外部jar 包依賴版本,如Spring Boot,maven plugins,mybatis,lombok等。

 

2.1、pom.xml

<?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.5.RELEASE</version>
    </parent>
    <packaging>pom</packaging>
    <modules>
        <module>cloud-common</module>
    </modules>
    <modelVersion>4.0.0</modelVersion>

    <groupId>cn.latiny</groupId>
    <artifactId>cloud-parent</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <project.build.sourceEncoding>UTF‐8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF‐8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <mybatis.version>1.3.5</mybatis.version>
        <lombok.version>1.18.12</lombok.version>
        <swagger.version>2.7.0</swagger.version>
        <spring.cloud.version>Hoxton.SR6</spring.cloud.version>
        <mysql.version>5.1.47</mysql.version>
        <fastjson.version>1.2.47</fastjson.version>
        <jwt.version>1.0.10.RELEASE</jwt.version>
        <servlet.version>3.1.0</servlet.version>
        <mybatis.version>1.3.5</mybatis.version>
        <oauth2.version>2.2.5.RELEASE</oauth2.version>
    </properties>

    <!--全局依賴版本,不會引入具體的包,后期只需引入坐標,不用再指定版本了-->
    <dependencyManagement>
        <dependencies>
            <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>

    <build>
        <plugins>
            <!-- Java編譯插件 -->
            <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>
        </plugins>
    </build>
</project>

PS:一定要指定Java編譯插件版本與encoding(UTF-8),否則打包時會報錯。

 

2.2、工程目錄

 

 創建maven工程后,作為父工程,只用配置管理pom.xml文件,src文件刪掉。

 

2.3、打包編譯

 

 

打包編譯時,可以設置跳過test步驟,先clean,再package或者install。

 

package:打包成jar包,在工程目錄下的target中會出現對應的jar包;

install:安裝jar包到本地的倉庫中,該倉庫是idea maven配置中的倉庫路徑;

 

2.4、父工程打包結果

 

 這里面沒有jar包,只有pom結尾的文件,因為父工程沒有具體的代碼。但是一旦打包成功,可以在其他項目引用該父工程的引用,PS:必須與父工程公用一個本地倉庫。

添加父工程引用即可:

 <parent>
        <artifactId>cloud-parent</artifactId>
        <groupId>cn.latiny</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>

 

3、公共模塊打包-子工程

 

3.1、在父工程下創建子工程cloud-common

pom.xml

<?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>
        <artifactId>cloud-parent</artifactId>
        <groupId>cn.latiny</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>cloud-common</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-commons</artifactId>
        </dependency>
    </dependencies>

</project>

此處以父工程的坐標作為common模塊的parent,這里需要注意:

  • 如果在同一個工程目錄下,父工程不需要install就可以引用;
  • 如果不在同一個工程目錄下,需要先對父工程進行install才可以引用;

 

cloud-common工程結構

 

 

3.2、安裝

先clean,后install,在maven配置的本地倉庫路徑下可以看到已安裝好的jar包:

 

 

 4、外部項目引用

在任何其他項目想要使用cloud-common的公共工具類,只需要在起pom.xml添加依賴即可:

 <dependency>
            <groupId>cn.latiny</groupId>
            <artifactId>cloud-common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

 

PS:該項目必須與cloud-common使用同一個本地maven倉庫;

 

 

 

 

abc


免責聲明!

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



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