一、加载maven项目:
1、idea工具栏file-open-选择项目加载进来
2、右键pom.xml 选择add as maven project
3、如果在pom.xml上的某个依赖一直报红且依赖本身没有问题,本pom其他的依赖也没有问题,那么在别的pom文件上加载一下这个依赖,然后刷新一下就好了
4、如果pom加了依赖,但是项目一直没有刷新jar包,右键pom.xml选择maven-reload project,或者idea右边maven工具栏的刷新按钮
5、下面的截图:m 执行maven命令,闪电:跳过test打包,手板:配置idea的maven路径
二、可能遇到的问题
加载maven下面加载条卡死或者一直加载不上
0、看一下maven的配置是不是对的,尤其是1
1、file-setting-build.....-maven-importing-下面圈主的地方数字往大了写写
2、写大了还是不行,将项目compile一下,注意控制台的打印信息,看看是不是报错了
如果plugins和dependences找不到了,没了,也compile一下,注意有没有控制台有没有报错,
如果compile还没有,再把刷新按钮刷刷
3、检查依赖是在dependencies还是dependencyManagement,如果
三、pom.xml配置文件和setting.xml配置文件
1、pom.xml
<version>标签只允许是常量,不能是${}
<scope>标签值:
compile:默认值,可省略不写。参与编译、测试、运行周期、打包。
test:参与测试代码的编译和执行,不会被打包,且依赖不会传递(A项目test的jar包。b项目引入a项目,jar包用不了)
runtime:参与测试、运行周期、打包。例如JDBC驱动,适用运行和测试阶段。(compile少了编译)
provided:参与编译、测试、运行周期。排除了打包,别的设施会提供。(compile少了打包)
system:参与编译、测试、运行周期。不从maven仓库下载,而是从本地拿。用systemPath的属性来定义路径
${project.basedir}是直接写死的
<dependency>
<groupId>XX</groupId>
<artifactId>XXX</artifactId>
<scope>system</scope>
<version>1.0</version>
<systemPath>${project.basedir}/src/main/resources/lib/XXX.jar</systemPath>
</dependency>
import:只能在 <dependencyManagement> 模块中使用。 打破单继承(maven单继承:一个子项目只能制定一个父 pom),且配合<type>pom</type>一起使用
<scope>import</scope>
<type>pom</type> <dependencyManagement>和<dependencies>区别:
dependencyManagement:不实际引入依赖,只是声明依赖版本,做一个统一的版本控制
dependencies:会真正的引入依赖,并且被子项目和引入此项目的其他项目继承(如果父项目dependencyManagement或者dependencies申明version了就不需要再写<version>了,如果都没有,则version是必须的,如果自己定义了version,那么就会忽略其他的version,而使用自己定义的version)
2、setting.xml的参数参考链接:
<localRepository>:本地仓库
<profiles>:设置环境:
<repositories>:设置仓库:setting.xml和pom.xml 都可以配置,pom中有就不会去setting取了
<mirrorOf>:根据值来配置是否覆盖上面设置的仓库内容
maven仓库的优先级:本地仓库(localRepositories) >POM中repositories仓库> settings中profile中的repositories仓库 > POM > mirrors全局仓库
profile优先级:中都定义了env属性,如果都没被激活或激活某一个profile的话,是没问题的。如果两个profile都被激活,那么会根据profile在配置文件中定义的位置,后面的属性会覆盖前面的属性。
多个repository优先级:如果第1个可用,就用第一个(其他的就不会再用了,如果一个jar包第二个仓库有,第一个没有,那么这个jar包获取不到),如果不可用,就依次往下找,repository中的id与mirror的mirrorOf一致时,mirrorOf中的url就会覆盖repository中的url地址。
如果 <mirrorOf>*</mirrorOf> , 那么所有仓库都使用我们配置的这个mirror作为jar包下载地址
<exclusions><exclusion>:排除jar包里面的某个或者几个jar包
<modelVersion> :Maven的版本 防止maven的版本发生更新时对系统的影响
<packaging>:打包方式:pom、jar
<parent>:父项目