Maven学习

Maven

参考链接: https://www.bilibili.com/video/BV1qt4y1X7ZW?p=1


项目构建工具

int构建
最早的构建工具,基于IED,2000年左右出现,当时最流行的java构建工具。他的XML脚本编写格式让XML文件特别大。对工程构建中的过程控制特别好。

Maven【java】
基于项目对象模型(POM),通过其描述信息来管理项目构建、报告和文档的软件项目管理工具。它填补了int的缺点。Maven第一次支持了从网络上下载的功能。仍然采用XML为配置文件格式。专注于依赖管理,使用java编写。

Gradle

结合以上两者的优点,继承了Ant的灵活和Maven的生理周期管理。被Google作为Android的御用管理工具,它最大的区别在于不用XML为配置文件格式,采用了DSL格式,使脚本更加简洁。


Maven简介

Maven,是一个软件(特别是Java软件)项目管理及自动构建工具。基于项目对象模型(POM)的概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。作为Apache组织中的一个开源项目,Maven主要服务于基于Java平台的项目构建,依赖管理和项目信息管理。

项目和管理:Maven提供了一种思想,让团队更科学地管理、构建项目的思想。我们可以通过配置文件的方式,对项目的描述,名称,项目版本号,项目依赖等信息进行描述,使项目结构更加的清晰。

依赖管理:Maven提供了Maven仓库的概念,把项目中的所有依赖全部放到仓库中,项目中想要用这些依赖就到仓库中去取,不需要再去下载一堆jar包,和处理他们的依赖关系。


Maven的四大特性

  • 依赖管理系统

Maven为Java世界引入了一个新的管理系统,jar包管理。只需要通过坐标就可以将jar包的依赖引入进来。我们去配它的依赖就可以了。可以用groupid,artifactid,version组成的coordination(坐标)唯一标识一个依赖。任何基于Maven构建的项目自身也必须定义这三项属性,生成的包可以是Jar包,也可以是war包或者jar包。

依赖引用 (示例):

在这里插入图片描述

  • 坐标属性理解

    groupid
    定义当前Maven项目隶属的实际项目-公司名称。(Jar包所在的仓库)由于Maven中模块的概念, 一个实际的项目往往分成很多模块。比如spring是一个实际项目,其对应的Maven模块会有很多。如 spring-core,spring-webmvc 等。

    artifactid
    定义实际项目中的一个Maven模块-项目名,一般是使用实际项目名称作为artifactid前缀。比如: spring-bean,spring-webmvc 等。

    version
    定义Maven项目当前所处的版本。

  • 多模块构建

在Maven中需要定义一个 parent POM(Maven是以项目为中心的设计。POM(project object model)是Maven对一个单一项目的描述。没有POM的话,Maven是毫无用处的——POM是Maven的核心。是POM实现的并驱动了这种以模型来描述的构建方式。)作为一组module(模组)的聚合POM。在该POM中可以使用标签来定义一组子模块。 parent POM 不会有什么实际构建产出。而 parent POM 中的 build配置及依赖配置都会自动继承给子 module 。

  • 一致的项目结构

Maven在设计之初的理念就是 Converseion over configuration(约定大于配置)。其定制了一套项目目录结构作为标准的Java项目结构,解决不同IDE带来的文件目录不一致的问题。

  • 一致的构建模型和插件机制

引用需要的服务的插件。


Maven的安装配置


Maven目录结构

目录目的
${basedir}存放 POM.XML(项目Jar包的依赖,插件的依赖 等)文件和所有子目录
${basedir}/src/main/javaJava源代码
${basedir}/src/main/resources项目资源文件(配置文件)
${basedir}/src/test/java测试代码
${basedir}/src/test/resources测试资源文件

Maven命令及参数

maven 命令格式:
mvn [plugin-name]:[goal-name]
选项:
mvn test 测试命令 或执行 /src/test/java 下Junit 单元测试
mvn clean 清空项目生成的临时文件,一般是模块下的 target 目录
mvn pakage 项目打包工具,会在模块下的 target 目录生成 jar 或 war 文件
mvn install 将打包的 jar / war 文件复制到本地仓库中,以供其他模块调用
mvn deploy 将打包文件上传到私服 
参数:
-D-D 开头,将Maven.test.skip的值设置为true,就是告诉 Maven 打包的时候跳过单元测试。同理 mvn deploy -Dmaven.test.skip=true 代表部署的时候跳过单元测试。
		
-X 显示maven允许的debug(调试)信息;

-q quit 控制Maven日志级别,仅显示错误;

-P 使用指定的profiles配置,开发,测试,正式,不同环境使用不同profiles。profiles定义了各环境变量的id,filters中定义了变量配置文件地址,其中地址中的环境变量就是上面的profiles中定义的值,resources 中定义哪些目录下的文件会被配置文件中定义的变量替换。

-e 显示maven运行出错的信息;

-o 离线执行命令,即不去远程仓库更新包;
	   
-U 强制去远程更新snapshot的插件或依赖,默认每天只更新一次;
	

Maven打包命令


Maven仓库

存放插件和一些jar包。
私服

私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,私服代理广域网上的远程仓库,供局域网内的Maven使用,当Maven需要下载构件时,先去私服当中去找,如果没有则从外部远程仓库下载,并缓存在私服上,再为Maven提供。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值