一、Maven:是一款服务于 Java平台的自动化构建工具


【1】Maven可以将一个项目按模块划分成不同的工程,利于分工协作;
【2】Maven可以将 jar包保存在自己的中央“仓库”中进行统一管理,有需要使用的工程引用这个文件接口即可,不需要真的将 ja包复制过来(解决同样的 jar包文件重复出现在不同的项目工程中,一方面浪费存储空间,另外也让工程比较臃肿);
【3】可以自动导入依赖的相关jar包,之前需要自己手动导入相关 jar包;
【4】Tip:如下表示运行时环境,主要存储 String等类似对象,其实只是一组 jar包的引用;

二、安装 Maven:配置环境变量即可


【1】创建 MAVNE_HOME环境变量

【2】在 path 中添加 Maven 的 bin 目录:验证(mvn -v)命令查看 maven 版本

三、自定义Maven仓库


修改解压目录下的conf/setting.xml文件:

四、命令


【1】maven compile:编译main文件,生成class文件位于 target 目录中。
【2】maven package:对主程序进行打包,生成文件在 target 目录中。
【3】maven clean:清理 target 目录下文件。
POM:project object model 项目对象模型。对于 Maven 工程是核心配置文件,与构建过程相关的一切设置都是在这个文件中进行设置。

五、坐标:使用下面三个向量在仓库中唯一定位一个Maven工程


【1】groupid公司或组织域名倒序+项目名
【2】artifactid模块名称<artifactid>Hello</artifactid>
【3】version版本

1 <groupId>org.springframework</groupId>
2 <artifactId>spring-core</artifactId>
3 <version>4.0.0.RELEASE</version>

定位的文件:org/springframework/spring-core/4.0.0.RELEASE/spring-core-4.0.0.RELEASE.jar

六、 仓库的分类


【1】本地仓库:当前电脑上部署的仓库目录,为当前电脑上所有的Maven工程服务。
【2】远程仓库:①、私服:搭建在当前局域网下,为当前局域网网范围内的所有Maven工程服务。②、中央仓库:架设在Internet上,为全世界所有Maven工程服务。③、中央仓库的镜像:为了分担中央仓库的压力,提升用户访问的速度。

七、依赖:Maven解析依赖信息时,会到本地仓库中找被依赖的jar包。


对于我们开发的工程需要使用 install 命令安装后就可以进入仓库,生成 jar 包等文件。

1 <dependency>
2 <groupId>com.shidaiyintong</groupId>
3 <artifactId>Hello</artifactId>
4 <version>0.0.1-SNAPSHOT</version>
5 <scope>compile</scope>
6 </dependency>

依赖具有传递性:当父类依赖了 jar 包后,子类 Maven Dependencies 也会自动添加,但非 compile 范围的 jar 包不能传递。
依赖的排除性:使用 exlutions 标签

 1 <exclusions>
2 <exclution>
3 <groupId>xxxx</groupId>
4 <artifactId>xxx</artifactId>
5 </exclution>
6 </exclutions>
7 <exclusions>
8 <exclution>
9 <groupId>xxxx</groupId>
10 <artifactId>xxx</artifactId>
11 </exclution>
12 </exclutions>

依赖的原则:解决 jar 包冲突问题,就近原则。相同路径取先声明者优先,指 dependency标签的声明顺序。
依赖的范围:【1】compile:对主程序、测试程序可见,主程序参与打包、测试程序不参与打包
【2】test:对主程序无效,对测试程序有效,不参与打包 


【3】provided:主要用于开发,测试有效。不参与打包(不部署),防止冲突(特别是一些服务器的jar包)。   

八、生命周期


清理、编译、测试、报告、打包、安装、部署、运行
  特性:当执行某一阶段时,都是从第一阶段开始执行。

九、利用 MyEclipse 中使用 Maven


【1】使用内置 Maven 但是需要设置如下(不建议使用自带的 Maven 程序,不稳定。使用我们自己解压的文件): Window—>Preferences—>Maven4MyEclise—>Installations—>Add

【2】设置 User Settings:指定 conf/settings.xml 的位置,进而获取本地仓库的位置,如下:

【3】修改每次创建 Maven 项目后,JDK的版本,需要在 settings.xml 文件中 <profiles> 标签内添加如下:

 1 <profile>
2 <id>jdk-1.8</id>
3 <activation>
4 <activeByDefault>true</activeByDefault>
5 <jdk>1.8</jdk>
6 </activation>
7 <properties>
8 <maven.compiler.source>1.8</maven.compiler.source>
9 <maven.compiler.target>1.8</maven.compiler.target>
10 <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
11 </properties>
12 </profile>

【4】Maven 中执行命令的方式:pom.xml—>右键—>Maven build...—>Golas(compile)等。
【5】Maven 创建一个 Web 工程:创建的时候 packing:war 包,创建完后,会发现与我们平常的 web 工程不太一样,缺少web.xml等文件。添加方式如下:选中工程右键进入 properties 属性—> Project Facets 去掉 Dynamic Web Model再勾上Dynamic Web Model,会出现超链接如下:

【6】在 Content directory 中输入要存放标准Web工程生成的文件的目录 

【7】最终目录如下:


【8】Maven工程导入Existing Maven Project 没有 cope 功能,因此要将Maven工程放入 workspace 目录中,进行导入。在Maven工程中主要通过 pom.xml 文件进行识别。普通Java文件导入时,有 cope 功能,也能够导入 Maven 工程,但必须是Eclipse 工程,工程中含有 .clsspath/.project 文件为Eclipse工程。
【9】自定义版本标签:方便版本升级等问题的解决,凡是需要声明后统一使用的场合都可以使用, 使用的时候只需要在<version> 中输入 ${atguigu.spring.version} 即可

1 <properties>
2 <atguigu.spring.verion>4.0.0.RELEASE</atguigu.spring.version>
3 </peoperties>

十、继承


对依赖范围:test、provide 的同一 jar 包的版本的管理。
解决思想:将此 jar包统一提取到“父”工程中,在子工程中声明此 jar包依赖时不指定版本号,以父工程中统一设定的为准,同时也便于修改。
操作步骤:【1】创建一个 Maven 工程作为父工程,打包方式为 pom
【2】在子工程中声明对父工程的引用
【3】将子工程中坐标与父工程坐标相同的内容删掉
【4】在父工程中统一 jar包依赖
【5】在自工程中删除jar包依赖的版本号
子类找干爹配置

1 <parent>
2 父元素的pom地址
3 <relativePath>../Parent/pom.xml</relativePath>相对地址
4 </parent>

父类统一管理配置:配置集成后,执行安装命令 install 时,要先安装 parent,按顺序 install,解决办法,聚合即可。

 1 <dependencyManagement>
2 <dependencies>
3 <dependency>
4 <groupId>junit</groupId>
5 <artifactId>junit<artifactId>
6 <version>4.0</version>
7 <scope>test</scope>
8 </dependency>
9 <dependencies>
10 </dependencyManagement>

十一、聚合:一键安装各个模块工程


【1】配置方式:在一个工程中配置,例如 parent 工程中:直接install parent项目就安装了全部工程,会自动检测顺序。
【2】查找 jar包的 pom文件:http://mvnrepository.com

1 <modules>
2 <module>../Hello</module>
3 <module>../HelloFriend</module>
4 </modules>

Maven 自动化构建的更多相关文章

  1. Java-Maven-Runoob:Maven 自动化构建

    ylbtech-Java-Maven-Runoob:Maven 自动化构建 1.返回顶部 1. 自动化构建定义了这样一种场景: 在一个项目成功构建完成后,其相关的依赖工程即开始构建,这样可以保证其依赖 ...

  2. 【第十四篇】- Maven 自动化构建之Spring Cloud直播商城 b2b2c电子商务技术总结

    Maven 自动化构建 自动化构建定义了这样一种场景: 在一个项目成功构建完成后,其相关的依赖工程即开始构建,这样可以保证其依赖项目的稳定. 比如一个团队正在开发一个项目 bus-core-api, ...

  3. Jenkins+Tomcat+svn+maven自动化构建简单过程

    搭建好jenkins自动化构建之后,点击立即构建,即可将svn服务器上的源码自动编译构建,并打成war包,然后将这个war包以及编译好的项目复制到指定服务器的tomcat容器里,当svn服务器的代码有 ...

  4. 浅谈maven自动化构建工具

    转载https://blog.csdn.net/zxm1306192988/article/details/76209062 Maven是什么[what] 1.Maven 是 Apache 软件基金会 ...

  5. maven自动化构建工具

    目录结构: 一.Maven简介 二.Maven核心概念 三.Maven的使用 四.Maven在IDEA中的应用 五.依赖管理 六.Maven常用设置 ------------------------- ...

  6. Jenkins和maven自动化构建java程序

    转自:http://www.cnblogs.com/gao241/archive/2013/04/08/3008380.html,版权归原作者所有. Jenkins是一个非常出色的持续集成服务器,本文 ...

  7. maven自动化构建deploy

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  8. 十六.maven自动化构建protobuf代码依赖

    protobuf在序列化和反序列化中的优势: 1):序列化后体积相比Json和XML很小,适合网络传输2):支持跨平台多语言3):消息格式升级和兼容性还不错4):序列化反序列化速度很快,快于Json的 ...

  9. 01_自动化构建工具之Maven

    目前技术中存在问题(为什么使用Maven): 一个项目就是一个工程: 缺陷:如果项目太过庞大,就不适合使用package来划分层次,最好是一个模块就是一个工程,利于分工协作. 解决:Maven可以将一 ...

  10. dokcer自动化构建部署java web 基于jenkins+maven+nuxus容器

    # dokcer自动化构建部署java web 基于jenkins+maven+nuxus容器 #环境centos 7.4 docker 18.03.0-ce # nuxus,创建maven本地源(可 ...

随机推荐

  1. Spark RDD编程

    1. 准备文本文件从文件创建RDD lines=sc.textFile()筛选出含某个单词的行 lines.filter()lambda 参数:条件表达式 2. 生成单词的列表从列表创建RDD wor ...

  2. STM32中断调试中遇到的问题

    STM32应用过程中遇到的问题 实现功能: 1.自动流水灯:在LED1~LED4上实现自动流水灯,流水间隔时间为200ms/bit,然后通过按键KEY1改变流水灯的速度,每次按键间隔时间增加200ms ...

  3. vxe-table 合并单元格

    <vxe-table @cell-click="handleClickCell" :span-method="spanMethods" //自动合并单元格 ...

  4. AdaptSegeNet 代码分析

    先G后D 训练 G: --S:pred1, pred2 = model(images) :  loss_seg1 = loss_calc(pred1, labels) :   loss.backwar ...

  5. 在Scorpio 1.0(天蝎座)中使用C# System.Diagnostics.Process打开chrome遇到的问题

    1 //在天蝎座 中使用C# System.Diagnostics.Process打开chrome遇到的问题 2 DiagProcess = import_type("System.Diag ...

  6. linux系统分类

    1.RedHat系列:Redhat.Centos.Fedora等 2.Debian系列:Debian.Ubuntu等 RedHat 系列 1 常见的安装包格式 rpm包,安装rpm包的命令是" ...

  7. OpenCV 4.5.2环境配置 + 图片灰度化处理

    一,OpenCV环境配置 注意:以下配置内容为Android开发环境配置好的基础上的OpenCV配置环境 1.官网下载OpenCV的sdk包,下载的是4.5.2的Android版本 Releases ...

  8. python代码抛出异常

    from traceback import format_exc except Exception: print(format_exc())

  9. Monterey 12.3 I225-V有线网卡导致死机或无法使用问题

    问题:升级Monterey12.3后启动到桌面死机 解决方法: 1.关闭/去掉所有有线网卡驱动.补丁.网卡设备ID注入: 2.启动命令中加入:dk.e1000=0: 3.启动不死机后,进入网络设置,手 ...

  10. 含字母数字的字符串排序算法,仿Windows文件名排序算法

    不废话,上排序前后对比: 类似与windows的目录文件排序,分几种版本C++/C#/JAVA给大家: 1.Java版 package com.eam.util;/* * The Alphanum A ...