首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spring Boot项目pom.xml中使用${project.basedir}引入本地jar包编译报错怎么办?

在上一篇文章中,本地jar包引用使用了${project.basedir}变量,但是在使用maven clean命令的时候却报了一个错误。

Maven建议不要使用systemPath来引用项目目录内的文件,因为这会导致依赖解析问题,尤其是在项目被其他项目依赖时。systemPath是一个绝对路径,其他项目无法通过这个路径找到该jar包。

Maven强烈建议修复这个问题,因为它可能会影响到项目构建的稳定性。未来的Maven版本可能不再支持使用systemPath指向项目内部文件。

解决办法

将本地依赖项作为一个模块添加到项目中,通过以下步骤实现:

第一步:创建一个新的Maven模块

首先,在父项目(即my-project)中创建一个新的子项目来包含该依赖项。假设将子项目命名为webp-imageio-core-module。

1)更新父项目的pom.xml

在父项目的pom.xml文件中,添加新的模块:

<module>webp-imageio-core-module</module>

<!-- 其他模块 -->

2)创建新模块

在项目根目录(my-project)下,创建一个新的目录webp-imageio-core-module,并在其中创建一个pom.xml文件,内容如下:

<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">

<modelVersion>4.0.0</modelVersion>

<groupId>com.cloudfish</groupId>

<artifactId>webp-imageio-core-module</artifactId>

<version>0.1.0</version>

<packaging>jar</packaging>

<dependencies>

<!-- 添加该模块需要的其他依赖项 -->

</dependencies>

3)将Jar文件添加到模块中

将webp-imageio-core-0.1.0.jar文件放到webp-imageio-core-module的src/main/resources目录下。

4)更新子模块的pom.xml

在webp-imageio-core-module的pom.xml文件中,添加如下配置,以确保该jar文件被包含在构建输出中:

<resources>

<resource>

<directory>src/main/resources</directory>

<includes>

<include>webp-imageio-core-0.1.0.jar</include>

</includes>

</resource>

</resources>

第二步:在主项目中添加模块依赖

在父项目(例如my-project)的pom.xml文件中,添加对新模块的依赖:

<dependency>

<groupId>com.cloudfish</groupId>

<artifactId>webp-imageio-core-module</artifactId>

<version>0.1.0</version>

</dependency>

<!-- 其他依赖项 -->

第三步:构建项目

在项目根目录下,运行以下命令来构建整个项目:

mvn clean install

这样,webp-imageio-core-0.1.0.jar会作为webp-imageio-core-module模块的一部分被包含在构建输出中,并且可以作为父项目的依赖项使用。

如果经常处理这样的本地依赖,可以考虑将其部署到一个私有Maven仓库(例如Nexus或Artifactory),这样可以更加方便地管理依赖项,避免将第三方jar文件直接包含在项目源代码中。

最后总结

上面的解决办法,其实就是把本地依赖作为一个子项目来管理。有完美主义、强迫症、容不得一丁点报错的可以用起来。

生产环境也搭建私有Maven仓库,这个有点不现实。而且本地依赖只有那么几个,并不是太多,如果是独立的项目更不需要了。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/ODy_Yp11u7N5qvir3AdGUMvw0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券