androidstudio引用本地maven_Maven多模块如何打包本地的jar包到war中

本文介绍了在Spring Boot项目中如何引用本地库的Jar包,并将其打包进WAR包的过程。关键步骤包括在模块的pom.xml中使用systemPath配置引用本地Jar,以及在构建部分配置spring-boot-maven-plugin和maven-war-plugin以确保本地Jar包被打包到WEB-INF/lib目录。
摘要由CSDN通过智能技术生成

现如今,使用spring-boot和maven开发项目已经越来越普遍了,同时大多时候我们也是通过maven以及公共的repo和私服repo来管理自己的jar包依赖,但难免会碰到有些jar包需要放在本地,通过本地jar包的形式加载到自己的项目里。

本文主要阐述这种情况下怎么处理,项目中虽然使用的spring-boot,但是还是打包成了war包,项目结构如下

project-A  //父工程
  module-a //启动类模块同时也是打包模块
  	module-a-pom.xml //packaging为war
  module-b //需要使用本地lib的模块
  	module-b-pom.xml
 pom.xml //packaging为pom
 lib //存放本地lib的目录

为了能够在部署war包后项目能够正常运行,需要做下面几件事

1. 如何在需要的模块中引用本地的包?

这里也即如何在 module-b 中引用lib目录中的jar包,如下配置

<dependency>
    <groupId>your.package.groupId</groupId>
    <artifactId>your.package.artifactId</artifactId>
    <version>your.package.artifactId</version>
    <scope>system</scope>
    <systemPath>${basedir}/../libs/your-package.jar</systemPath>
</dependency>

上述中,前三个和我们正常的maven配置一样,这需要注意的就是<systemPath>配置了,需要使用绝对路径,指向你的本地jar包路径${basedir}表示项目根目录,但是这里的根目录并不是我所想的父模块的目录(即project-A目录路径)而是该pom所在的模块的目录(即module-b目录)${basedir}代表的应该是本pom所在的模块对应的目录,所以我们需要使用 ../ 来找到对应的jar包。为了解决这个问题,自己google了下:

how to get the super pom basedir in a child module pom?​stackoverflow.com
26443fdcbdec364c209ddd5b60f1bcc7.png

有几种方案,比如使用${project.parent.basedir}或者在父pom中定义<rootPath> ${basedir} </rootPath>然后在子pom中使用${rooPath}本人实践均无效。

2. 如何将本地的jar包打包进项目的war包?

按照1中配置完后编译没有问题,但是运行则报错,发现本地的lib并没有打包到war包中 WEB-INF/lib目录里,我们还需要在启动模块进行配置,这里即 module-a模块,如下配置:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <includeSystemScope>true</includeSystemScope>
            </configuration>
        </plugin>
        <!-- 下面是为了将本地jar包打入WEB-INF/lib下而增加的配置-->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <configuration>
                <webResources>
                    <resource>
                        <!-- 指向的是包含所有要用jar包的目录 -->
                        <directory>${basedir}/../libs</directory>
                        <!-- 编译后要把这些jar包复制到的位置 -->
                        <targetPath>WEB-INF/lib</targetPath>
                    </resource>
                </webResources>
            </configuration>
        </plugin>
    </plugins>
</build>

这里需要配置两个地方

  • spring-boot-maven-plugin插件配置<includeSystemScope>true</includeSystemScope>
  • 增加 maven-war-plugin插件,这里的<directory>也需要按照1中方法正确指向你的本地jar包所在的目录

至此,便可以在spring-boot的war包中将本地的jar包打包进去从而顺利运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值