澳门新萄京:maven学习整理

澳门新萄京:maven学习整理

Maven 是什么?

Maven 是三个品类管理和整合工具。Maven
为开荒者提供了1套完整的创设生命周期框架。开搜聚团大概不用花多少时间就可见活动完结工程的基本功营造配置,因为
Maven 使用了3个行业内部的目录结会谈二个暗许的营造生命周期。

在有多少个开采团队境况的意况下,Maven
能够在非常的短的时日内使得每项专门的学业都依据正规进行。因为大多的工程安插操作都非常简单并且可复用,在创设报告、检查、塑造和测试活动配置时,Maven
能够让开采者的办事变得更简便。

1:背景

 原每家每户名:Maven学习计算(1)

原博文出自于:        感谢!

 

1. 什么是maven
  • 翻译为“专家”,“内行”
  • Maven是跨平台的门类管理工具。首要劳务于基于Java平台的项目构建借助于管理和种类消息保管。
  • 何以是卓越的类型构建?
     中度自动化,跨平台,可选择的机件,标准化的
  • 怎样是借助?为什么要进行注重管理?
     自动下载,统一注重处理
  • 有哪些项目新闻?
     项目名称描述等,开拓职员消息,开荒者音讯等
  • 预订优于配备(convention over configuration)

Maven 安装

此地介绍一下在Windows 系统上设置Maven。注:Maven 3.三+ 须要JDK
一.柒或越来越高版本技艺实践

  关于项目标搭建,某个人利用开辟工具搭建项目,然后将项目所凭借第2方jar
复制到类路线上边,上述搭建格局未有第叁方类库的重视性关系,在导入二个jar包的时候,那个jar包还也许依附其他jar包,其余的jar包有重视更加多的jar包,所以临时会经常碰见ClassNotFind错误。使用部分档期的顺序营造筑工程具得以很好的防止这种主题材料。近期的品类构建筑工程具关键有:Gradle、Ant、Maven等。项目构建进程包蕴→→→→→那多少个步骤,那两个步骤正是3个类型的欧洲经济共同体营造进程。

1、Maven的基本概念

  Maven(翻译为”专家”,”内行”)是跨平台的项目管理工科具。主要劳务于基于Java平台的品种创设,依赖管理和类型消息保管

二. 怎么着是创设

澳门新萄京 1

营造流程

Maven 的下载地址:官方下载 

澳门新萄京 2

咱俩将下载下来的zip文件,解压到地面磁盘目录,然后配置情况变量。

澳门新萄京 3

一.一、项目营造

  项目构建过程包罗【清理项目】→【编写翻译项目】→【测试项目】→【生成测试报告】→【打包项目】→【计划项目】那多少个步骤,那多个步骤正是一个品类的完全营造进度。

澳门新萄京 4

 理想的门类打造是惊人自动化,跨平台,可采用的零部件,标准化的,使用maven就能够帮咱们完结上述所说的花色营造进度。

3. mavne模型

澳门新萄京 5

maven模型

景况变量配置(windows七为例):

1.添加M2_HOME 和 MAVEN_HOME 意况变量。注:Maven 说只是加多 M二_HOME , 但一些系列仍引用
Maven 的文书夹 MAVEN_HOME, 因而,为了安全也把它增多进去

澳门新萄京 6

二.立异Path变量的变量值。在终极追加

澳门新萄京 7

一声令下:mvn -v 或 mvn -version: 查看Maven版本音讯,并规定是或不是安装成。

C:\Users\Administrator>mvn -v
Apache Maven 3.5.3 (3383c37e1f9e9b3bc3df5050c29c8aff9f295297; 2018-02-25T03:49:0
5+08:00)
Maven home: D:\apache-maven-3.5.3\bin\..
Java version: 1.8.0_161, vendor: Oracle Corporation
Java home: D:\DevSoft\jdk1.8.0_161
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"

万一您看到类似音讯,表达 Apache Maven 在 Windows 三春安装成功。

2:maven简介

一.二、注重管理

  重视指的是jar包之间的相互正视,比方大家搭建1个Struts2的支出框架时,光光有struts2-core-贰.三.1陆.三.jar那几个jar包是丰盛的,struts二-core-2.3.1陆.三.jar还借助别的的jar包,注重管理指的正是行使Maven来保管项目中应用到的jar包,Maven管理的法子便是“自动下载项目所急需的jar包,统一管理jar包之间的凭仗关系”。

4. mavne的严重性特点
  • 富有约定,知道您的代码在哪个地方,放到何地去
  • 持有三个生命周期,比方推行 mvn install
    就足以自行实施编写翻译,测试,打包等塑造进程
  • 只供给定义1个pom.xml,然后把源码放到暗中认可的目录,Maven帮你管理任何作业
  • 享有依赖管理,酒店管理

第一个Maven项目

可以在品种目录下实行如下命令:会在您的品类路径下生成七个称谓为hello的Maven项目。

mvn archetype:generate -DgroupId=com.cnblogs.hello -DartifactId=hello -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false 

 hello目录结构如下图:

澳门新萄京 8

具备的源代码放在文件夹 /src/main/java/, 全体的单元测试代码放入
/src/test/java/。

pom.xml文件内容:该公文是在Maven项目中的宗旨配置文件。它是三个独立的布局文件,在那之中饱含以你营造项目所需的绝大许多消息。前边笔者会详细介绍这一个文件。

 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 2   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 3   <modelVersion>4.0.0</modelVersion>
 4   <groupId>com.cnblogs.hello</groupId>
 5   <artifactId>hello</artifactId>
 6   <packaging>jar</packaging>
 7   <version>1.0-SNAPSHOT</version>
 8   <name>hello</name>
 9   <url>http://maven.apache.org</url>
10   <dependencies>
11     <dependency>
12       <groupId>junit</groupId>
13       <artifactId>junit</artifactId>
14       <version>3.8.1</version>
15       <scope>test</scope>
16     </dependency>
17   </dependencies>
18 </project>

接下去实践命令:mvn package 将品种张开包装管理。注:那几个命令必须在hello项目木木下实行即:D:\MavenWork\hello目录

D:\MavenWork\hello>mvn package
[INFO] Scanning for projects...
[INFO]
[INFO] ----------------------< com.cnblogs.hello:hello >-----------------------
[INFO] Building hello 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ hello ---
[WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e
. build is platform dependent!
[INFO] skip non existing resourceDirectory D:\MavenWork\hello\src\main\resources

[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ hello ---
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding GBK, i.e. buil
d is platform dependent!
[INFO] Compiling 1 source file to D:\MavenWork\hello\target\classes
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ he
llo ---
[WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e
. build is platform dependent!
[INFO] skip non existing resourceDirectory D:\MavenWork\hello\src\test\resources

[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ hello -
--
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding GBK, i.e. buil
d is platform dependent!
[INFO] Compiling 1 source file to D:\MavenWork\hello\target\test-classes
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ hello ---
[INFO] Surefire report directory: D:\MavenWork\hello\target\surefire-reports
Downloading from alimaven: http://maven.aliyun.com/nexus/content/groups/public/o
rg/apache/maven/surefire/surefire-junit3/2.12.4/surefire-junit3-2.12.4.pom
Downloaded from alimaven: http://maven.aliyun.com/nexus/content/groups/public/or
g/apache/maven/surefire/surefire-junit3/2.12.4/surefire-junit3-2.12.4.pom (1.7 k
B at 740 B/s)
Downloading from alimaven: http://maven.aliyun.com/nexus/content/groups/public/o
rg/apache/maven/surefire/surefire-providers/2.12.4/surefire-providers-2.12.4.pom

Downloaded from alimaven: http://maven.aliyun.com/nexus/content/groups/public/or
g/apache/maven/surefire/surefire-providers/2.12.4/surefire-providers-2.12.4.pom
(2.3 kB at 1.0 kB/s)
Downloading from alimaven: http://maven.aliyun.com/nexus/content/groups/public/o
rg/apache/maven/surefire/surefire-junit3/2.12.4/surefire-junit3-2.12.4.jar
Downloaded from alimaven: http://maven.aliyun.com/nexus/content/groups/public/or
g/apache/maven/surefire/surefire-junit3/2.12.4/surefire-junit3-2.12.4.jar (26 kB
 at 10 kB/s)

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.cnblogs.hello.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ hello ---
[INFO] Building jar: D:\MavenWork\hello\target\hello-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 10.482 s
[INFO] Finished at: 2018-06-15T14:46:34+08:00
[INFO] ------------------------------------------------------------------------

末段试行java命令实行测试打包生成的jar

java -cp target/hello-1.0-SNAPSHOT.jar com.cnblogs.hello.App

结果打印如下:

Hello World!

终极生成站点,实施命令:mvn site

mvn site

施行命令会会依赖项目标音信生成三个网址。您能够查阅target/site“下转移的文书档案。

 

经过快速入门小编能够归纳询问Maven的有的意义,那只是叁个神速入门指南。后续几章会有更周密的详细介绍。

  Apache maven是七个软件项目管理工具,基于项目对象模型POM(project object
model),可用来治本项指标依赖、编写翻译、文书档案等音讯。使用maven营造项指标时候,项目信赖的jar包不带有在项目中,而是放置在用户目录下的.m二文件夹下边。

1.3、使用Maven的好处

  Maven中接纳约定,约定java源代码代码必须放在哪个目录下,编写翻译好的java代码又无法不置于哪个目录下,那几个目录都有远近著名的预订。

  Maven的每七个动作都有着1个生命周期,举个例子实践 mvn install
就可以自动实施编写翻译,测试,打包等创设进度

  只须求定义一个pom.xml,然后把源码放到暗中认可的目录,Maven帮大家管理别的职业

  使用Maven能够进行项目高度自动化塑造,信赖管理(那是使用Maven最大的益处),商旅管理。

 

 

5. maven安装
  1. jdk安装(依据maven版本选拔符合条件的jdk版本)
  2. 下载maven,
    加压下载文件, 配置MAVEN_HOME就可以使用(类似jdk配置).
  3. maven目录介绍
![](https://upload-images.jianshu.io/upload_images/9266529-a322e4e9f13e89d1.png)

maven解压目录

bin:含有mvn运行的台本
boot:含有plexus-classworlds类加载器框架
conf:含有settings.xml配置文件
lib:含有Maven运营时所须要的java类库
LICENSE.txt, NOTICE.txt, README.txt针对Maven版本,第二方软件等简便介绍

3:maven优点

二、Maven下载

  下载地址:

澳门新萄京 9

 

下载已毕后,获得二个削减包 澳门新萄京 10,解压,能够见到maven的整合目录

 澳门新萄京 11

Maven目录深入分析

  • bin:含有mvn运维的脚本
  • boot:含有plexus-classworlds类加载器框架
  • conf:含有settings.xml配置文件
  • lib:含有Maven运转时所须要的java类库
  • LICENSE.txt, NOTICE.txt, README.txt针对Maven版本,第一方软件等简要介

 

 

陆. maven初阶配置
  • 设置MAVEN_HOME蒙受变量
     进级时只供给下载最新版本,解压缩后再一次安装MAVEN_HOME遇到变量就能够
  • 设置MAVEN_OPTS情形变量
     -Xms128m -Xmx512m
  • 布局用户范围的settings.xml
     MAVEN_HOME/conf/settings.xml 全局的
     ~/.m2/settings.xml
      -暗中同意饭馆:当前用户路线C:\Users[UserName].m2
      -localRepository:用户货仓,用于检索依赖包路径
  • 用户Maven依赖包路线档期的顺序目录

    澳门新萄京 12

    依附包路线档案的次序目录

 -settings.xml文件必须与maven安装路径下的内容保持一致  
 -settings.xml文件中设置路径指向设定的仓库目录  
&lt;localRepository&gt;D:\\maven\\repository&lt;/localRepository&gt;  
 -因为maven的中心仓库在国外,下载会很慢,
建议使用阿里云的maven仓库-[配置方式](https://link.jianshu.com?t=https://www.cnblogs.com/keitsi/p/6000649.html)  
 **注意**:  
  用户级别的仓库在全局配置中一旦设置,全局配置将不再生效,转用用户所设置的仓库,否则使用默认路径仓库.

  3.1 连串规范
maven基于约定优于配备规格,约定java源代码代码必须放在哪个目录下,编写翻译好的java代码又必须置于哪个目录下。它的门类创设是莫斯科大学自动化,跨平台,可选拔的组件,规范化的。约定的目录结构得以更利于大家随后的操作:比方:mvn
test;mvn package

三、Maven安装

  壹、首先要力保Computer上曾经安装了JDK(要jdk
1.6+的版本),配置好JDK的情况变量,使用如下的几个指令检查检查JDK设置的情状。**

1 Echo %JAVA_HOME%
2 Java -version

 澳门新萄京 13

 

贰、对apache-maven-三.贰.三-bin.zip举办解压缩

  对apache-maven-三.贰.3-bin.zip进行解压缩,比方解压到如下目录(解压目录最棒不用有中文)

澳门新萄京 14

 

 三、设置系统情形变量:MAVEN_HOME

澳门新萄京 15 澳门新萄京 16

4、设置情形变量Path,将%MAVEN_HOME%\bin加入Path中,一定要留意要用分号;与别的值隔绝,如下图所示:

澳门新萄京 17

%MAVEN_HOME%\bin代表的正是”E:\apache-maven-3.2.3\bin”目录

  伍、验证Maven安装是或不是成功

  打开cmd窗口

澳门新萄京 18

输入”mvn –v”命令 查看Maven的相干音信,如下图所示:

澳门新萄京 19

可见产出如此的音信就认证Maven的安装已经成功了。

  6、设置MAVEN_OPTS情形变量(可选配置)

  由于Maven命令实际上是实施了Java命令,所以能够通过JAVA命令参数的方法来设置MAVEN运行参数。MAVEN_OPTS情形变量便是用于此用途

  MAVEN_OPTS

  -Xms12八m -Xmx51②m,分别安装JVM的纤维和最大内部存款和储蓄器,如下图所示:

 

 

 

七. maven项目约定
  • src/main/java —— 存放项指标.java文件
  • src/main/resources —— 存放项目财富文件,如spring, mybatis等配备文件
  • src/test/java —— 存放全体测试.java文件,如JUnit测试类
  • src/test/resources —— 测试财富文件
  • target —— 项目输出地方
  • pom.xml——maven项目为主配置文件

  3.二 文书档案和告知 使用mvn
site能够快速变化项目站点

四、Maven的简要利用

八. maven宗旨概念

1.maven坐标

  • 何以是坐标?
     在平面几何中坐标(x,y)能够标记平面中唯壹的一点
  • Maven坐标首要构成
     groupId:定义当前Maven项目隶属项目,
    一般为商家域名反写(com.taobao)
     artifactId:定义实际项目中的三个模块(testMaven)
     version:定义当前项指标方今版本(壹.1.0)
     packaging:定义该品种的打包方式(jar,war,maven)
  • Maven为啥接纳坐标?
     -Maven世界全部大量塑造,大家须要找三个用来唯1标志二个营造的会师典型
     -具备了合并标准,就足以把查找职业付出机器
    贰.凭仗管理-注重范围

    澳门新萄京 20

**2-1.传递性依赖**  
 其中依赖范围**scope**用来控制依赖和编译,测试,运行的classpath的关系.
主要的是三种依赖关系如下:  
 1.compile:
默认编译依赖范围。对于编译,测试,运行三种classpath都有效  
 2.test:测试依赖范围。只对于测试classpath有效  
 3.provided:已提供依赖范围。对于编译,测试的classpath都有效,但对于运行无效。因为由容器已经提供,例如**servlet-api**.  
 4.runtime:运行时提供。面向接口编程时,
在编译时期不需要知道具体的实现是谁,
所以编译阶段可以不需要具体的实现出现, 例如:**jdbc驱动**.  
 5.system 本地一些jar 例如短信jar

2-1-1.借助管理-注重范围对传递信赖的影响:

澳门新萄京 21

列是首先一向依赖,行是第1直接重视

二-2.可选正视
<optional> true/false 是或不是向下传递
贰-三.解决注重
<exclusions>
 <exclusion>
   所包罗坐标
 免除信赖包中所包涵的依附关系
 没有供给充裕版本,间接连串排除
三.依据争持
 假诺直白与直接重视中包蕴有同贰个坐标不相同版本的财富注重,以直接注重的版本为准(就近[最短路径]原则)
 假使直接正视中包罗有同一个坐标分歧版本的财富依赖,以安顿顺序下方的本子为准(加载先后原则)

  3.3 **类库管理
只要定义一个pom.xml,然后把源码放到私下认可的目录,Maven帮大家管理jar包。
maven会自动将依赖的类库下载到当地,并且下载的类库假诺还借助其余的类库,它也会自行下载过来。省去了小编们下载的动作**

四.一、Maven项目标目录约定

MavenProjectRoot(项目根目录)
   |—-src
   |     |—-main
   |     |         |—-java ——存放项目标.java文件
   |     |         |—-resources ——存放项目能源文件,如spring,
hibernate配置文件
   |     |—-test
   |     |         |—-java ——存放全数测试.java文件,如JUnit测试类
   |     |         |—-resources ——存放项目财富文件,如spring,
hibernate配置文件
   |—-target ——项目输出地方
   |—-pom.xml —-用于标志该品种是2个Maven项目

玖. 生命周期
  1. 何为生命周期?
     -Maven生命周期正是为了对富有的构建进度进展抽象和归并
     -包涵项目清理,起始化,编写翻译,打包,测试,铺排等大致具备创设步骤
  2. Maven有叁套相互独立的生命周期,请留心这里说的是“3套”,而且“互相独立”,那叁套生命周期分别是
    Clean Lifecycle(清理项目):
    在进展真正的营造在此以前开展一些理清职业
    Default Lifecycle(营造项目):
    塑造的骨干部分,编译,测试,打包,安顿等等。
    Site Lifecycle: 生成类型报告,站点,揭橥站点。
     再一次重申一下它们是互相独立的,你能够单独调用clean来清理工科作目录,仅仅调用site来生成站点。当然你也能够间接运营mvn clean install site 运营具备那3套生命周期。
     A Build Lifecycle is Made Up of Phases
     A Build Phase is Made Up of Plugin Goals

2.1 clean生命周期:
 clean生命周期每套生命周期都由壹组阶段(Phase)组成,我们一直在命令行输入的授命总会对应于3个特定的品级。举例,运维mvn
clean
,那个的clean是Clean生命周期的一个阶段。有Clean生命周期,也可能有clean阶段。Clean生命周期一共包涵了多少个等第:
 pre-clean 实行一些须求在clean在此之前到位的做事
 clean 移除全体上叁遍创设转换的文件(target文件)
 post-clean 实践一些要求在clean之后随即达成的做事
 mvn clean
中的clean正是地点的clean,在叁个生命周期中,运转有些阶段的时候,它前边的保有阶段都会被周转,也正是说,mvn
clean 等同于 mvn pre-clean clean
,要是咱们运转 mvn post-clean ,那么
pre-clean,clean
都会被周转。那是Maven很重大的3个条条框框,能够大大简化命令行的输入。
2.1 default生命周期:
 default生命周期是Maven生命周期中最关键的三个,绝一大半干活都发生在这几个生命周期中。这里,只解释一些相比首要和常用的级差:
 validate
 generate-sources
 process-sources
 generate-resources
 process-resources 复制并管理能源文件,至目的目录,计划打包
 compile 编写翻译项目标源代码
 process-classes
 generate-test-sources
 process-test-sources
 generate-test-resources
 process-test-resources 复制并拍卖财富文件,至指标测试目录。
 test-compile 编写翻译测试源代码。
 process-test-classes
 test
运用方便的单元测试框架运转测试。那些测试代码不会被打包或安插。
 prepare-package
 package 经受编写翻译好的代码,打包成可公告的格式,如 JA翼虎 。
 pre-integration-test
 integration-test
 post-integration-test
 verify
 install 将包安装至本土饭店,以让其余品类信赖。
 deploy
将最终的包复制到长途的库房,以让别的开拓人士与体系共享。
 运作任何贰个阶段的时候,它前边的有着阶段都会被周转,那也正是干什么大家运营mvn
install
的时候,代码会被编写翻译,测试,打包
。此外,Maven的插件机制是完全信赖Maven的生命周期的,因而了然生命周期至关心器重要。
2.2 site生命周期:
 pre-site 实行一些亟需在生成站点文档以前产生的行事
 site 生成项指标站点文书档案
 post-site
实行一些索要在生成站点文档之后变成的做事,并且为布局做希图
 site-deploy 将扭转的站点文书档案安插到一定的服务器上
 这里平常应用的是site阶段和site-deploy阶段,用以生成和揭露Maven站点,那可是Maven非凡强劲的机能,Manager相比喜欢,文档及总括数据自动生成,很狼狈。

澳门新萄京 22

生命周期图例

  1. 常用命令:
    a) compile
    b) clean 删除target/
    c) test test case junit/testNG
    d) package 打包
      mvn clean package -U (强制拉一遍)
    e) install 把项目install到local repo
    f) deploy 发本地jar发布到remote

  三.4 项目打包管理 在品种开荒到早晚等第,能够采纳mvn
package打包,它会自动先运转mvn test,跑所有的Test
Case,唯有1切通过工夫科学打包。生成的war包(倘使项目标packaging为war)在target目录下。使用mvninstall将编译和包裹好的公文揭露到当地饭馆中。使用mvn
deploy在组成或许发布情况下实行,将最后版本的包拷贝到长途的repository。 

肆.2、手动创制Maven项目,使用Maven编写翻译

  一、创制项目根文件夹,举个例子Maven0壹

澳门新萄京 23

 

  二、在Maven0一文件夹中创制“pom.xml”文件,如下图所示:

澳门新萄京 24

  pom.xml文件中的内容如下:

 

 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0" 
 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
 5 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 6     <!--所有的Maven项目都必须配置这四个配置项-->
 7     <modelVersion>4.0.0</modelVersion>
 8     <!--groupId指的是项目名的项目组,默认就是包名-->
 9     <groupId>cn.gacl.maven.hello</groupId>
10     <!--artifactId指的是项目中的某一个模块,默认命名方式是"项目名-模块名"-->
11     <artifactId>hello-first</artifactId>
12     <!--version指的是版本,这里使用的是Maven的快照版本-->
13     <version>SNAPSHOT-0.0.1</version>
14 </project>

 

 三.编写Java类文件,Maven项目分明,全数的*.java文件必须放在src目录下的main目录下的java目录中,在Maven0壹项目根目录中开创三个src目录,然后在src目录中成立main目录,在main目录中再成立java文件夹,如下图所示:

澳门新萄京 25澳门新萄京 26澳门新萄京 27

在java文件夹下成立八个Hello.java文件,如下图所示

澳门新萄京 28

在Hello.java文件中编辑如下代码:

public class Hello{
2     public static void main(String[] args){
3         System.out.println("Hello Maven");
4     }
5 }


4.使用Maven编译Hello.java,首先进入到项目根目录,然后使用命令”mvn compile”进行编译,如下图所示:

澳门新萄京 29

澳门新萄京 30

运用Maven编写翻译实现之后,在项目根目录下会生成3个target文件夹,如下图所示:

澳门新萄京 31

开荒target文件夹,可以看来当中有二个classes文件夹,如下图所示:

澳门新萄京 32

classes文件夹存放的便是编写翻译成功后变卦的.class文件,如下图所示:

澳门新萄京 33

 

 5.使用”mvn
clean
“命令清除编写翻译结果,也等于把编写翻译生成的target文件夹删掉,如下图所示:

澳门新萄京 34

执行完”mvn clean“命令后,target文件夹就能够被剔除了。

 

 

10. 插件
  • Maven的主干仅仅定义了空洞的生命周期现实的职分都以交由插件实现的.
  • 每一个插件都能落到实处多个职能,每个效用正是一个插件目的
  • Maven的生命周期与插件指标相互绑定,以成就有个别具体的创设任务
    比方compile正是插件maven-compiler-plugin的3个插件指标

<build>
    <plugins>
        <plugin>
                <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <version>2.2.1</version>
            <executions>
                        <execution>
                    <goals>
                        <goal>jar-no-fork</goal>
                            </goals>
                        <phase>verify</phase>
                </execution>
                </executions>
        </plugin>
    </plugins>
</build>
  • 常用插件
     1.
    插件常用地址1
     2.
    插件常用地址贰
     3. findbugs 静态代码检查
     肆. versions 统一晋级版本号
      mvn versions:set -DnewVersion=1.1
     伍. source 打包源代码
     6. assembly 打包zip、war
     7. tomcat7
  • maven插件开垦

4:先前时代策动干活

伍、修改从Maven中央旅社下载到本地的jar包的私下认可存款和储蓄地方

  从Maven中央仓库下载到本地的jar包的默许存放在”${user.home}/.m2/repository”中,${user.home}表示这段时间报到系统的用户目录(如”C:\Users\gacl”),如下图所示

 澳门新萄京 35

 

澳门新萄京 36

 

 

Jar包存放在那几个职务不太好,大家盼望能够本身定义下载下来的jar包的寄放地点,因而大家得以友善设置下载到本地时的jar包的寄放目录。

  在“E:\”目录下开创贰个“repository”文件夹

澳门新萄京 37

 

找到apache-maven-3.2.3\conf目录下的settings.xml文件,如下图所示:

 澳门新萄京 38

 

 

 编辑setting.xml文件,如下图所示:

 澳门新萄京 39

 

增多下边包车型地铁代码

1 <localRepository>E:/repository</localRepository>

澳门新萄京 40

 

这样就可以把jar包下载到我们指定的E:/repository目录中了,如下图所示:

澳门新萄京 41

 

把jar包下载到本地的好处就是,当编译时,会优先从本地的jar包去找,如果本地存在,就直接拿来用,如果不存在,就从Maven的中心仓库去下载。如下图所示:

  第三遍实行”mvn compile”和”mvn
clean”那七个指令时,Maven会去中心旅馆下载需求的jar包,而第一次实行那五个指令时,由于所需的jar包已经在地面包车型客车库房中储存,所以就能够直接拿来用了,那样就省去了去大旨酒店下载jar包的年华。

  以上便是Maven的简易入门上书。

 

 

 

11. 继承
  • 何为承继?
     承袭为了祛除重复,我们把无数如出一辙的配置提抽出来
    例如:grouptId,version等
    父工程设置为被连续: <packaging>pom</packaging>
    子工程后续父工程:
     省略父工程中定义的坐标除走访名称中的全数设定,加多承接父工程
      <parent>
       <groupId>…</groupId>
       <artifactId>… </artifactId>
       <version>… </version>
       <relativePath>../父工程项目名</relativePath>
      </parent>
  • 父工程统一处理子工程正视版本
     <dependencyManagement>
       <dependencies>
        //加多公共重视包
       </dependencies>
     </dependencyManagement>
     一.只好冒出在父pom
     二.子工程仅仅增添依赖包,无需加上版本,版本由父工程承接而来
     三.为了进一步便于管理,将有所的版本管理设置在一块儿,设置为系统属性值:
     <properties>
      <junit.version>4.9</junit.version>
      ……
     </properties>
    引用使用${junit.version}格式进行,只还好依据范围设置
  • 父工程统1管理子工程正视关系
    设若全体子工程都急需借助某个包,父工程得以透过设置正视,将依赖关系传递到子工程中:
     <dependencies>
      //增多公共注重包
     </dependencies>
  • 总结:
    1.dependencyManagement中定义的依赖子module不会共享
    2.dependencies中定义的依赖子module能够共享

  确定保证已设置JDK,并 “JAVA_HOME”
变量已进入到 Windows 境况变量。

12. 聚合
  • 何为聚合?
     若是我们想一次创设四个体系模块,那大家就须求对两个体系模块举行联谊
     <modules>
      <module>../子项目名称壹</module>
      <module>../子项目名称二</module>
       <module>../子项目名称三</module>
     </modules>
  • 相会与继承的涉嫌
     -聚焦首要为了快捷营造项目
     -后续首要为了破除重复

5:下载maven

13. archetype模块化

a) 生成贰个archetype
  i. mvn archetype:create-from-project
  ii. cd /target/generated-sources/archetype
  iii. mvn install
 b) 从archetype创制项目 mvn archetype:generate -DarchetypeCatalog=local

  下载地址:

1四. 库房管理
  • 何为Maven仓库?
     用来统1存款和储蓄全体Maven共享营造的地方正是仓库
  • Maven仓库布局
     -根据Maven坐标定义每种营造在库房中头一无二存款和储蓄路线
     -大致为:groupId/artifactId/version/artifactId-version.packaging
  • 库房的归类
     -本地仓库:
       ~/.m2/repository/
       种种用户唯有四个地点旅馆
     -远程货仓
       主旨商旅:Maven暗中认可的中距离商旅,不含有版权能源.
       私服[Nexus]:是一种奇特的长途宾馆,它是架设在局域网内的酒店

    澳门新萄京 42

  澳门新萄京 43

一五. maven 排查命令

一. 查看项目maven依赖树: mvn dependency:tree > a.txt
二. 翻看系统变量: mvn help:system

下载后,存放在磁盘中开始展览解压,小编这边解压到C盘:

澳门新萄京 44

澳门新萄京 45

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图