目录
友情提醒:
先看文章目录,大致了解文章知识点结构,点击文章目录可直接跳转到文章指定位置。
第一章、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依赖