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

  • 相关阅读:
    Pycharm5使用
    flask 分页
    CRM
    课程项目
    vue的属性指令
    vue的文本指令
    vue实例
    vue使用
    ajax的json格式数据
    django知识点小结
  • 原文地址:https://www.cnblogs.com/007sx/p/12439620.html
Copyright © 2020-2023  润新知