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种方式都加上也可以,一劳永逸!

 

posted @ 2020-03-08 00:58  007少侠  阅读(5221)  评论(0编辑  收藏  举报
友情链接:便宜vps(CN2GIA线路)
站长统计: