java-maven的使用

一、加载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的参数参考链接:Maven配置文件(setting.xml)属性解析_香草味小布丁的博客-CSDN博客

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值