一、加载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路径

IJ java项目maven菜单不见了 java maven项目怎么运行_java

二、可能遇到的问题

加载maven下面加载条卡死或者一直加载不上

0、看一下maven的配置是不是对的,尤其是1

IJ java项目maven菜单不见了 java maven项目怎么运行_java_02

1、file-setting-build.....-maven-importing-下面圈主的地方数字往大了写写

IJ java项目maven菜单不见了 java maven项目怎么运行_java_03

 2、写大了还是不行,将项目compile一下,注意控制台的打印信息,看看是不是报错了

如果plugins和dependences找不到了,没了,也compile一下,注意有没有控制台有没有报错,

如果compile还没有,再把刷新按钮刷刷

IJ java项目maven菜单不见了 java maven项目怎么运行_IJ java项目maven菜单不见了_04

IJ java项目maven菜单不见了 java maven项目怎么运行_intellij-idea_05

 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>:父项目