Maven学习笔记

1 篇文章 0 订阅

一、Pom文件

1.定义全局变量

在Maven的pom.xml文件中,

<properties>用于定义全局变量,
在POM中通过${property_name}的形式引用变量的值。

2.POM中的全局变量可以分为如下5种类型:

系统Shell的环境变量env.property_name,如

${env.PATH}
表示引用当前系统的PATH变量值,注意这里的PATH必须都是大写。

Java System Properties,即Java属性文件

${java.home} 

project.property_name,直接引用POM中的元素值

${project.version}
表示引用<project><version>1.0</version></project>中的1.0

settings.property_name,直接引用settings.xml中的元素值

${settings.offline}
表示引用<settings<offline>false</offline></settings>中的false

property_name,

直接访问<properties>中已经定义的变量值
${myVar}
表示引用<properties><myVar>myvalue</myVar></properies>中的myvalue

3.dependencyManagement标签

作用:

在Maven中dependencyManagement的作用其实相当于一个对所依赖jar包进行版本管理的管理器。

jar版本

1.如果dependencies里的dependency自己没有声明version元素,那么maven就会到dependencyManagement里面去找有没有对该artifactId和groupId进行过版本声明,如果有,就继承它,如果没有就会报错,告诉你必须为dependency声明一个version
2.如果dependencies中的dependency声明了version,那么无论dependencyManagement中有无对该jar的version声明,都以dependency里的version为准。

用法

//只是对版本进行管理,不会实际引入jar  
<dependencyManagement>  
      <dependencies>  
            <dependency>  
                <groupId>org.springframework</groupId>  
                <artifactId>spring-core</artifactId>  
                <version>3.2.7</version>  
            </dependency>  
    </dependencies>  
</dependencyManagement>  
//会实际下载jar包  
<dependencies>  
       <dependency>  
                <groupId>org.springframework</groupId>  
                <artifactId>spring-core</artifactId>  
       </dependency>  
</dependencies>  

4.package标签

packaging给出了项目的打包类型,即作为项目的发布形式,其可能的类型。在Maven 3中,其可用的打包类型如下:
jar,默认类型
war
ejb
ear
rar
par
pom
maven-plugin

<packaging>war</packaging>  

5.modules标签

Maven 3支持Maven项目的多模块(multi-modules)结构。这样的Maven项目也被称为聚合项目,通常由一个父模块和若干个子模块构成。
其中,父模块必须以pom打包类型,同时以

<modules>

给出所有的子模块。父模块的POM示例如下:

<packaging>pom</packaging>  
<modules>  
  <module>my-frontend-project</module>  
  <module>my-service-project</module>  
  <module>my-backend-project</module>  
</modules>  

二、Maven命令行工具

1.Maven打包过程中跳过测试

mvn install -DskipTests  
或者
mvn install -Dmaven.test.skip=true  

2.查看依赖树

解决问题:解决依赖冲突问题
控制台

mvn dependency:tree

将结果打印到指定文件

mvn dependency:tree --> tree.txt

三、Maven问题实战

1、依赖冲突

什么是依赖冲突

举例
A依赖于B及C,而B又依赖于X、Y,而C依赖于X、M,则A除引B及C的依赖包下,还会引入X,Y,M的依赖包(一般情况下了,Maven可通过等若干种方式控制传递依赖)。
这里有一个需要特别注意的,即B和C同时依赖于X,假设B依赖于X的1.0版本,而C依赖于X的2.0版本,A究竟依赖于X的1.0还是2.0版本呢?
这就看Classloader的加载顺序了,假设Classloader先加载X_1.0,而它就不会再加载X_2.0了,如果A恰恰希望使用X_2.0呢,血案就这样不期而遇了。

哪个jar冲突了

按照下面这个文档来查找
https://blog.csdn.net/sun_wangdong/article/details/51852113

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值