maven无法自动导入依赖jar包解决方式


友情提醒:
先看文章目录,大致了解文章知识点结构,点击文章目录可直接跳转到文章指定位置。

第一章、maven无法导入依赖

1.1)问题:maven无法导入依赖

maven点击Reimport导入按钮,jar包依然导入不进来。

在这里插入图片描述

1.2)解决方案

1.2.1)确保本地仓库路径配置正确

要确保本地仓库路径配置正确:

打开Maven安装路径下/config/settings.xml文件。
在文件中找到<localRepository>标签。
确保标签中的值是你想要设置的本地仓库路径,例如:
<localRepository>D:/tool/repository</localRepository>

如图:
在这里插入图片描述

1.2.2)确定pom文件中的</dependency>依赖导入配置没有写错

pom文件的格式通常如下:注意版本,ID不要写错

        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.2</version>
        </dependency>

1.2.3)确保idea的maven配置不要写错

打开IDEA—》File—》setting—》build—》build tools —》maven查看右侧配置,是否为自己的maven安装路径
在这里插入图片描述

第二章、maven中只有Lifecycle,Dependencies和Plugins消失

2.1)问题:maven中只有Lifecycle,Dependencies和Plugins消失

在idea中导入一个新的maven项目出现如图情况,Dependencies和Plugins消失。
maven导入时,idea内无法运行并提示“Unable to import maven project: See logs for details
其中maven版本3.8.9
ide版本2018.3
在这里插入图片描述

2.2)解决方案:

2.2.1)尝试clean然后install

先查看IDE的maven配置是否有问题

尝试清理 IDE 的缓存(clean)并重新构建项目(install),有时 IDE 的缓存可能导致依赖显示错误

2.2.2)确认maven版本是否匹配

②查看idea的运行日志
help–》show log in explor
③发现日志提示3.8.9的maven版本太高,需要降低到3.3版本,降到3.3.9后就好了

第三章、无法安装独有的本地jar包

3.1)问题:无法安装独有的本地jar包

①内网环境连接不上外网,无法从远程仓库下载jar包,只能自己安装。
②一些独特项目的独有jar包,我们也无法从远程仓库下载,只能自己安装。**

3.2)解决方案

3.2.1)确保本地仓库有完整jar包,使用命令安装

①使用命令
本地仓库路径配置正确,本地仓库里也有jar包,但是依然导入不了jar包,可以运行下面的命令,将JAR包安装到本地仓库。
打开命令行工具(如CMD、Shell或其他终端)输入:

mvn install:install-file -Dfile=/localpath/t/xxxexample.jar -DgroupId=yourGroupId 
-DartifactId=yourArtifactId -Dversion=yourVersion -Dpackaging=jar

②命令解释
/localpath/t/xxxexample.jar是包含jar包名称的JAR文件路径。

yourGroupId、yourArtifactId和yourVersion 是pom文件中jar包的Maven坐标,根据具体需求来替换。

-Dpackaging=jar 是固定写法不用替换,指定包的类型为JAR。

3.2.2)通过resource导入本地jar包

自动导入失败,使用安装命令还是安装不了,那就试试手动引入jar包吧。

①pom文件中添加以下插件和插件配置

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
   <configuration>
       <includeSystemScope>true</includeSystemScope>
   </configuration>
</plugin> 

②在resource文件夹下创建jar文件路径,存放我们自己的jar包
在这里插入图片描述

③在pom文件中添加jar包配置和系统路径配置

<dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.0</version>
            <scope>system</scope>
            <systemPath>
${project.basedir}/src/main/resources/jar/velocity-engine-core-2.0.jar
            </systemPath>
</dependency>

3.2.3)非maven项目,直接把jar包放在lib目录下

对于非Maven项目,你可以直接将所需的jar包放在项目的lib目录下。然后,你可以通过IDE将这些jar包添加到项目的构建路径中项目就可以使用这些jar包中的类和功能。
①在项目的目录新建lib文件夹
在这里插入图片描述
②把jar包直接复制进lib目录后—》选中lib目录再右键选择Add as Library
在这里插入图片描述
依赖就导入了。

3.2.4)maven项目,jar包放在lib下导致的问题及解决

①pom文件中添加以下插件和插件配置

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
   <configuration>
       <includeSystemScope>true</includeSystemScope>
   </configuration>
</plugin> 

②将所需的jar包放在项目的lib目录下,通过修改pom.xml文件来配置Maven以使用这些本地jar包作为依赖项。

<dependencies>
    <dependency>
        <groupId>com.example</groupId>
        <artifactId>example</artifactId>
        <version>1.0</version>
        <scope>system</scope>
        <systemPath>${basedir}/lib/example.jar</systemPath>
    </dependency>
</dependencies>

这种方式导致的问题
1、打包时缺少依赖项: Maven可能无法正确地将本地jar包打包到最终文件中,因为它不会自动将本地jar包打包到构建产物中。

2、不可移植: 如果项目需要在其他环境中构建,其他环境可能无法找到本地jar包的路径,导致构建失败。

3、难以管理: 使用本地jar包作为依赖项可能会导致依赖管理变得困难,特别是在团队合作或持续集成环境中。

解决:打包时排除第三方依赖,并把第三方依赖输出到指定目录
使用maven的插件maven-dependency-plugin
maven-dependency-plugin的copy-dependencies目标会将所有依赖(包括Maven中的依赖和lib目录下的依赖)复制到target/lib目录下。

<build>
        <plugins>
            <plugin>
                <!--打包时去除第三方依赖-->
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <layout>ZIP</layout>
                    <includes>
                        <include>
                            <groupId>non-exests</groupId>
                            <artifactId>non-exests</artifactId>
                        </include>
                    </includes>
                </configuration>
            </plugin>
            <!--拷贝第三方依赖到指定目录-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <!--targer/lib是依赖jar包的输出目录,根据喜好配置-->
                            <outputDirectory>target/lib</outputDirectory>
                            <excludeTransitive>false</excludeTransitive>
                            <stripVersion>false</stripVersion>
                            <includeScope>runtime</includeScope>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

当依赖被复制到target/lib目录后,就可以通过在运行时使用命令来引用这些依赖。

-Djava.ext.dirs参数: 通过在运行时使用-Djava.ext.dirs参数来指定target/lib目录依赖目录。

java -Djava.ext.dirs=target/lib -jar yourapp.jar

//或者这样
java -Dloader.path=./lib -jar xxx.jar

第四章、pom文件不报红,maven依赖爆红。

4.1)检查确认pom文件没错,但是maven依赖爆红。

在这里插入图片描述

4.2)解决方案:

把所有依赖注释掉点击刷新Reimport
放开注释,点击刷新Reimport,再次reload maven依赖

  • 34
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值