Maven总结
项目管理构建工具:maven ant gradle ==
项目管理利器(Maven)——maven介绍及环境搭建
maven可以帮助我们更有效地管理项目,它也是一套强大的自动化构建工具,覆盖了编译、测试、运行、清理、打包和部署等整个项目周期。它提供了一个仓库的概念,统一帮助我们管理项目所依赖的第三方jar包,最大地避免了由于运行环境配置的不同而引起的问题。
1、目录结构:
boot目录:包含一个类加载器框架。
bin目录:包含mvn的运行脚本。
confing目录:包含配置文件。
lib目录:包含mvn使用的类库。
2、配置环境变量:
M2_HOME maven主目录
path 添加 ;%M2_HOME%\bin
3、检测安装:cmd: mvn -v
pom文件简述:
pom.xml:(从struts-core的jar包中的maven中找到)
①.<modelVersion>:maven版本。
②.<groupId>:项目的包名。
③.<artifactId>:模块名(有时候建议是项目名)。
④.<version>:0.0.1SNAPSHOT快照版本
在cmd中运行项目:(先进入项目所存放的目录)
①mvn compile 编译主程序源代码,不会编译test目录的源代码。第一次运行时,会下载相关的第三方插件和maven所依赖Jar,可能会比较费时
已有的maven项目部署到新环境上时,执行mvn compile命令,自动下载(如依赖其他工程类,可以在相应的目录下用install创建jar)相关的Jar (老办法是需要对所依赖的Jar坐下改动,触发自动下载。)
②mvn test 运行应用程序中的单元测试
会生成target文件夹,主程序编译的字节码文件在classes下面,测试程序放在test-classes下,surefire-reports文件夹下面存放是的所生成的测试报告
③mvn package 会在target目录下生成一个maven01-model-0.0.1SNAPSHPT.jar
项目管理利器(Maven)——常用的构建命令
1. mvn -v 版本。
2. mvn compile 编译。
3. mvn test 测试。
4. mvn package 打包。
5. mvn clean 清除maven生成的target目录。
6. mvn install 将生成的jar安装到本地仓库中。
maven编译代码的流程:
1. 执行mvn compile 命令编译java代码文件;
2. 如果发现代码中引用到了其他的包文件(jar包);
3. 首先回去核心配置文件pom.xml文件中去查找相应的配置依赖;如图dependency中
4. 根据配置依赖先去本地的仓库中查找jar包资源;(可以在相应的目录下用install创建)
5. 如果本地不存在,则会再去联网到maven的中央仓库中查找。
Maven创建目录的两种方式:(archetype自动创建目录骨架)
1.archetype:generate 按照提示进行选择。
2.archetype:generate -DgourpId=组织名,公司网址的反写+项目名称
-DartifactId=项目名-模块名
-Dversion=版本号
-Dpackage=代码所在的包名
项目管理利器(Maven)——maven中的坐标和仓库
1、坐标。
2、构件通过坐标作为其唯一标识。
3、仓库:
-本地仓库。
-远程仓库:maven-model-builder-3.3.3.jar\org\apache\maven\model,超级pom.xml文件(其他pom均继承此pom),全球中央仓库地址:https://repo.maven.apache.org/maven2
-镜像仓库:/conf/setting文件:
(一旦指定了镜像仓库,所有针对原仓库的访问都会转到镜像仓库,原仓库将不能直接访问)
<mirror>
<id>maven.net.cn</id>(该镜像仓库的ID)
<mirrorOf>central</mirrorOf>(为哪个仓库配置镜像--central为默认仓库--也可以使用通配符*匹配所有仓库)
<name>central mirror in china</name>
<url>http://maven.net.cn/content/groups/public</url>
</mirror>
4、修改本地仓库的位置:<localRepository>D:/Maven/repository</localRepository>
项目管理利器(Maven)——maven的生命周期和插件
Maven的生命周期大概如下:
clean compile test package install
这几个命令对应了一个项目的完整的构建过程,这几个步骤对应的都有插件来完成:
清理、编译、测试、打包、集成测试、验证、部署
Maven的生命周期分为三个独立的生命周期(每一个生命周期有分为若干个阶段,其中defaul是最核心的一个):
1. clean 清理项目
2. default 构建项目
3. site 生成项目的站点
1、clean 清理项目:
pre-clean :执行清理前的工作
clean:清理上一次构建生成的所有文件
post-clean:执行清理后的文件
2、default构建项目(最核心)
compile test package install
3、site 生成项目站点
pre-site 在生成项目站点之前要完成的工作
site 生成项目的站点文档
post-site在生成项目站点后要完成的工作
site-deploy发布生成的站点到服务器上
注意:Maven的生命周期对应的命令是顺序执行的,如果没有人为的顺序的一个个执行,那么Maven会默认的自动运行。
clean package 执行某个阶段时前面的阶段会自动运行
阶段之间是存在依赖关系(dependency)的,如test依赖test-compile。在执行mvn test时,会先运行mvn test-compile,然后才是mvn test。
控制在哪个阶段运行执行程序
(自动化测试代码运行在指定阶段)
以下这段pom信息是否可以控制代码在指定阶段运行???
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<name>项目的描述名</name>
<url>项目的地址</url>
<description>项目描述</description>
<developers>开发人员信息</developers>
<licenses>许可证信息</licenses>
<!-- 依赖列表 -->
<dependencies>
<!-- 依赖项 -->
<dependency>
<!-- 坐标 -->
<groupId></groupId>
<artifactId></artifactId>
<version></version>
<type></type>
<scope>依赖的范围</scope>(只在依赖的范围内有用,PS:junit如果此处为test,则只在测试的依赖范围内有用,如在主代码引用junit类则报错)
<optional>设置依赖是否可选,默认是false(子项依赖继承),如为true子项必须显示引入该依赖</optional>
<!-- 排除依赖传递列表 -->
<exclusions>
<exclusion></exclusion>
</exclusions>
</dependency>
</dependencies>
<!-- 依赖的管理,并不会被运行(不会引用到实际的依赖),一般定义在父模块中,由子模块去继承 -->
<dependencyManagement>
<dependencies>
<dependency></dependency>
</dependencies>
</dependencyManagement>
<!-- 对构建行为提供相应的支持 -->
<build>
<!-- 插件列表 -->
<plugins>
<plugin>
<!-- 指定坐标 -->
<groupId></groupId>
<artifactId></artifactId>
<version></version>
</plugin>
</plugins>
</build>
<!-- 一般在子模块中指定所继承的父模块 -->
<parent></parent>
<!-- 模块列表 -->
<modules>
<module></module>
</modules>
Maven总结的更多相关文章
- 【分享】标准springMVC+mybatis项目maven搭建最精简教程
文章由来:公司有个实习同学需要做毕业设计,不会搭建环境,我就代劳了,顺便分享给刚入门的小伙伴,我是自学的JAVA,所以我懂的.... (大图直接观看显示很模糊,请在图片上点击右键然后在新窗口打开看) ...
- 理解Maven中的SNAPSHOT版本和正式版本
Maven中建立的依赖管理方式基本已成为Java语言依赖管理的事实标准,Maven的替代者Gradle也基本沿用了Maven的依赖管理机制.在Maven依赖管理中,唯一标识一个依赖项是由该依赖项的三个 ...
- 【微框架】Maven +SpringBoot 集成 阿里大鱼 短信接口详解与Demo
Maven+springboot+阿里大于短信验证服务 纠结点:Maven库没有sdk,需要解决 Maven打包找不到相关类,需要解决 ps:最近好久没有写点东西了,项目太紧,今天来一篇 一.本文简介 ...
- 安装eclipse的maven插件
我们团队用maven来管理项目需要的库文件,其实以前都没听过maven,第一次接触这个,师兄要我直接去装下这个,开始以为还挺简单的,没想到中间遇到了一些小麻烦,现在把我成功安装maven的过程分享下, ...
- MAVEN学习-第一个Maven项目的构建
MAVEN安装成功之后就可以进行项目的构建和管理了: 为什么要用maven进行项目的构建和管理? 对于初学者来说一个最直接的也是最容易里的优点在于JAR包的管理,相对于以前开发一个项目的时候我们需要用 ...
- Maven 代理设置
在maven的安装目录下 %MAVEN_HOME%/conf/setting.xml 中进行设置 <proxies> <!-- proxy | Specificatio ...
- spring maven pom.xml设置
spring pom.xml设置 <?xml version="1.0" encoding="UTF-8"?> <project xmlns= ...
- maven依赖查询地址
http://search.maven.org/#search%7Cga%7C1%7C
- maven 中snapshot版本和release版本的区别
maven中的仓库分为两种,snapshot快照仓库和release发布仓库.snapshot快照仓库用于保存开发过程中的不稳定版本,release正式仓库则是用来保存稳定的发行版本.定义一个组件/模 ...
- Maven多模块,Dubbo分布式服务框架,SpringMVC,前后端分离项目,基础搭建,搭建过程出现的问题
现互联网公司后端架构常用到Spring+SpringMVC+MyBatis,通过Maven来构建.通过学习,我已经掌握了基本的搭建过程,写下基础文章为而后的深入学习奠定基础. 首先说一下这篇文章的主要 ...
随机推荐
- Pause/Resume Instance 操作详解 - 每天5分钟玩转 OpenStack(34)
本节通过日志详细分析 Nova Pause/Resume 操作. 有时需要短时间暂停 instance,可以通过 Pause 操作将 instance 的状态保存到宿主机的内存中.当需要恢复的时候,执 ...
- C# 扩展方法集
语法注意点 可以使用扩展方法来扩展类或接口. 不能重写扩展方法. 扩展方法只能在非嵌套.非泛型静态类内部定义. 扩展方法必须定义在静态类中. 扩展方法的第一个参数的类型用于指定被扩展的类型,它限制该扩 ...
- Java JDBC基础学习小结
JDBC是一个Java应用程序接口,作用是封装了对数据库的各种操作.JDBC由类和接口组成,使用Java开发数据库应用都需要4个主要的接口:Driver.Connection.Statement.Re ...
- Java 链表
按链表的组织形式分有ArrayList和LinkList两种.ArrayList内部其实是用数组的形式实现链表,比较适合链表大小确定或较少对链表进行增删操作的情况,同时对每个链表节点的访问时间都是co ...
- 适配iOS10的哪些事 ---- 学习笔记八
一. 上传了一个版本,为什么没有构建版本? 解:info.plist中的Bundle version 与上一个版本一致或少于上一个版本,上线新版本时,Bundle version和Bundle ... ...
- Mysql数据库主从心得整理
管理mysql主从有2年多了,管理过200多组mysql主从,几乎涉及到各个版本的主从,本博文属于总结性的,有一部分是摘自网络,大部分是根据自己管理的心得和经验所写,整理了一下,分享给各位同行,希望对 ...
- MySQL常用数据库小结
SQL分类: DDL-数据定义语言(CREATE,ALTER,DROP,DECLARE) DML-数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL-数据控制语言(GRAN ...
- Office2013插件开发Outlook篇(2)-- Ribbon
一.获取当前实例 在Ribbon1的任何方法中调用如下代码,可获取当前实例. 如: Application application = new Application(); var list = ap ...
- Go学习
简介 Go语言是Google出了一个语言,基本概念我就不介绍了, GO语言从原生上支持高并发,并提供了简单的调用方式,我们就重点研究一下它的高并发 进程与线程 在介绍高并发之前,我们需要了解一下我们现 ...
- springMVC Aspect AOP 接口耗时统计
在接口开发中,我们通常需要统计接口耗时,为后续接口性能做统计.在springMVC中可以用它的aop来记录日志. 1.在spring配置文件中开启AOP <!--*************** ...