java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > maven无法自动导入依赖jar包

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

作者:Holy_Java

有时候Maven无法自动导入包是因为该包未下载到本地仓库中,本文就来介绍一下解决方法,具有一定的参考价值,感兴趣的可以了解一下

第一章、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-pluginmaven-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依赖

到此这篇关于maven无法自动导入依赖jar包解决方式的文章就介绍到这了,更多相关maven无法自动导入依赖jar包内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文