maven

是什么

maven是 软件项目管理(依赖管理,项目信息聚合) 和 自动构建的工具。基于项目对象模型的概念,maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。Maven提供构建一个完整的生命周期框架。开发团队快速,简便完成基础工具建设,Maven使用标准的目录结构和默认构建生命周期。

下载与安装

官网下载http://maven.apache.org/,下载 Maven 的 zip 文件,解压目录为安装位置
配置Windows环境变量:
Maven 3.2 要求 JDK 1.6 或以上版本, 而 Maven 3.0/3.1 需要 JDK 1.5 或以上。

1 JDK配置:

路
路径为JDK的文件夹路径,假设你解压缩到文件夹 – D:\project Files\Java目录下(包括jdk文件名)

2 maven环境变量配置

添加 M2_HOME 和 MAVEN_HOME,值都为maven解压路径(包括文件名)
在这里插入图片描述
假设你解压缩到文件夹 – D:\software\yiibai.com\apache-maven

3 更新 PATH 变量

![ ](https://img-blog.csdnimg.cn/20190701183130132.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNTE2NjQ3,size_16,color_FFFFFF,t_70在这里插入图片描述环境变量-Path-编辑-新建-添加 Maven bin ,如图: %M2_HOME%\bin()。

4 验证

在CMD命令行下输入 mvn –version
配置成功
配置成功,如果有红色ERROR字体,可能是步骤出错了

5 文件目录内容

目录Value
根目录存放 pom.xml和所有的子目录
/src/main/java项目的 java源代码
/src/main/resources项目的资源,比如说 property文件
/src/test/java项目的测试文件,如junit文件
/src/test/resources项目的测试的资源

6 jar包存放位置及 修改配置文件setting.xml

再标题五后执行的操作
创建jar包存放位置,如:d:/mvn/repo
修改配置文件,使创建文件夹生效,apache-maven-xxx\conf\settings.xml文件
修改localRepository 为

<localRepository>d:/mvn/repo</localRepository>

创建镜像,加快jar包下载速度

<mirror> 
      <id>alimaven</id> 
      <name>aliyun maven</name> 
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url> 
      <mirrorOf>central</mirrorOf>         
   </mirror>

均在setting.xml文件内修改

完成maven环境配置

7 在cmd下对maven进行操作的常用指令

在这里插入图片描述

8 maven生命周期

在这里插入图片描述
maven生命周期:初始化-编译-测试-打包-验证-安装-部署

9 文件目录

创建maven文件,自动构建目录,在cmd命令行输入
mvn archetype:generate -DarchetypeCatalog=internal -DgroupId=com.chinasofti.build -DartifactId=helloworld
com.chinasofti.build为项目名,maven 的 archetype 插件建立了一个 helloworld 目录,这个名字来自 artifactId
在这个目录下面,有一个 Project Object Model(POM) 文件 pom.xml 。这个文件用于描述项目,配置插件和管理依赖关系。

在这里插入图片描述
编译
mvn clean compile exec:java -Dexec.mainClass=“com.chinasofti.build.App”
在这里插入图片描述
这个时候, maven 在 helloworld 下面建立了一个新的目录 target/ ,构建打包后的 jar 文件 helloworld-1.0-SNAPSHOT.jar 就存放在这个目录下。

源代码和资源文件放在 src/main 下面,而测试代码和资源放在 src/test 下面。

Maven 已经为我们建立了一个 App.java 文件:

Java代码

 package com.mycompany.helloworld;   
      
    /**  
     * Hello world!  
     *  
     */   
    public class App {   

      
        public static void main( String[] args ) {   
            System.out.println( "Hello World!" );   
        }   
    }  

10 基本概念-坐标

<dependency>
	<groupId>net.sf.json-lib</groupId>
	<artifactId>json-lib</artifactId>
	<version>2.4</version>
	<type>..</type>
	<classifier>jdk15</classifier>
</dependency>

分别用来定位 1 项目名,2 子模块名 ,3 项目当前的版本 ,4 通常默认jar , 5(可选)用来定义构建输出与主构件对应的附属构件

11 依赖

依赖传递

Only compile and runtime scopes are transitive(只有编译和运行时依赖才能传递)
A->B->C
简单传递依赖:A->C
A->B-C(0.1)
A->C(0.2)
最短路径优先原则: A->C(0.2)
A->B->C(0.1)
A->E->C(0.2)
第一声明优先原则:最终依赖C(0.1)

依赖归类
原文:https://blog.csdn.net/cckevincyh/article/details/73512722

<spring.version>2.5</spring.version>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>${spring.version}</version>

这里简单使用到了Maven的属性,首先使用properties元素定义了Maven的属性,该例子中定义了一个spring.version子元素,其值为2.5,有了这个属性之后,Maven运行的时候,会将POM中所有 s p r i n g . v e r s i o n 替 换 成 2.5 , 也 就 是 说 , 可 以 使 用 {spring.version}替换成2.5,也就是说,可以使用 spring.version2.5使{}的方式来引用Maven的属性,然后将所有Spring依赖的版本值用这一属性引用。这个和在java中常量PI替换3.14是同样的道理,只是语法不同而已。

排除归类
原文:https://blog.csdn.net/cckevincyh/article/details/73512722

传递性依赖会给项目隐式地引入很多依赖,着极大简化了项目依赖的管理,但是有些时候这种特性也会带来问题。例如,当前项目有一个第三方依赖,而这个第三方依赖由于某些原因依赖了另一个类库的SNAPSHOT版本,那么这个SNAPSHOT就会成为当前项目的传递性依赖,而SNAPSHOT的不稳定性会直接影响到当前的项目。这时就需要排除掉该SNAPSHOT,并且在当前项目中声明该类库的某个正式发布的版本。还有一些情况,你可能也想要替换掉某个传递性依赖,比如Sun JTA API,Hibernate依赖与这个JAR,但是由于版权的因素,该类库不在中央仓库中,而Apache Geronimo项目有一个对应的实现。这时你就可以排除Sun JAT API,而声明Geronimo的JTA API实现。

  <groupId>com.cc.maven</groupId>
  <artifactId>project-b</artifactId>
  <version>1.0.0</version>
  <exclusions>
        <exclusion>
         <groupId>com.cc.maven</groupId>
          <artifactId>project-c</artifactId>
        </exclusion>
</exclusions>

若A依赖于B,B依赖于C,想排除A的传递依赖,就可以这样做。

12 继承依赖

父maven项目中通过dependenciesManagement中定义公共依赖项
子maven项目中通过dependencies中定义公共依赖项
插件/properties都可以继承

13 maven jar包寻找顺序优先级(1-2-3-4)

1local -> private-> central 本地仓库
2local:localRepository in settings.xml 本地创建的磁盘仓库
3private:mirrors in settings.xml 镜像仓库
4central: Public Repositories in nexus maven云端仓库

14 Profile

参考https://www.jianshu.com/p/58f6c7808e8d
未深入学习,就不发表自己的意见了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值