spring項目(springmvc)(多模塊/單模塊)maven打包引入第三方jar方式,使用scope:system配置systemPath編譯,不用添加到本地倉庫!


注:此方式只適用於springmvc項目,springboot項目不可用!

若是springboot項目可參考:https://www.cnblogs.com/007sx/p/12442386.html

完整的引入三方jar包含2部分,缺一不可,
第一部分為編寫代碼階段,編譯時引用!
第二部分為打包成war階段,運行時引用!

 

示例(多模塊項目,單模塊同理,以下也有說明!):

第一部分(編譯調試時使用):

目錄結構以及jar所在目錄如下:

 

 

pom.xml中:

 

 

<dependency>
    <groupId>com.test</groupId>
    <artifactId>testjar</artifactId>
    <version>0.0.1</version>
    <scope>system</scope>
    <systemPath>${basedir}/src/main/resources/lib/test.jar</systemPath>
</dependency>

 

第二部分(打包時使用):

pom.xml(其它模塊)中:

<build>
    <finalName>${project.artifactId}</finalName>
    <plugins>
        <!--使用maven-war-plugin插件在編譯時指定第三方jar包目錄並引入-->
        <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <version>3.2.0</version>
            <configuration>
                <webResources>
                    <resource>
                        <!-- 引入本模塊下的jar/單模塊項目的jar -->
                        <!--<directory>${basedir}/src/main/resources/lib</directory>-->
                        <!-- 引入多模塊項目其它模塊下的jar -->
                        <directory>../cashloan-component/src/main/resources/lib</directory>
                        <targetPath>WEB-INF/lib</targetPath>
                        <includes>
                            <include>**/*.jar</include>
                        </includes>
                    </resource>
                </webResources>
            </configuration>
        </plugin>
    </plugins>
</build>

說明:由於此pom.xml是子模塊的,所以引入其它模塊下的jar需要../xxx形式,如果是單模塊項目,直接${basedir}/xxx即可!

最后打包的效果:

 

 target/xxx/WEB-INF/lib/test.jar 存在即可!

完成這步驟代碼即可正常構建運行和打包部署!

 

注:目前存在的問題,打包之后會在classes目錄下target/xxx/WEB-INF/classes或者target/classes目錄下多出來一個lib(示例中resources下目錄命名為lib)目錄里面存放的是三方jar,這個jar在項目運行中是用不到的,所以浪費了傳輸war包的時間!還沒找到很好的解決方案,希望多多評論交流!

(已解決!)

方案分為單模塊和多模塊。

1. 單模塊pom.xml:只需在war打包插件中排除即可,如:

 

<packagingExcludes>WEB-INF/classes/lib/*.jar</packagingExcludes>

2. 多模塊的被依賴模塊pom.xml中(即最終打成jar的模塊):

 

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>false</filtering>
            <excludes>
                <exclude>lib/*.jar</exclude>
            </excludes>
        </resource>
    </resources>
</build>

 

當然,多模塊時,2種方式都加上也可以,一勞永逸!

 


免責聲明!

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



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