maven学习

1.Maven介绍及环境搭建

  1.1 maven介绍

    maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。

  1.2 maven环境搭建

    从maven官网下载最新的maven版本,并配置环境变量(此处不做详细介绍,不会可以百度)。

2.maven版的HelloWorld

  第一步: 建立maven的目录结构  

    --HelloWorld(项目名)

               --src

                  --main

                     --java

                       --com.imooc.maven01.model(包名)

                  --test

                     --java

                       --com.imooc.maven01.model(包名)

  第二步:创建Java文件及其测试文件

  HelloWorld.java      

1 package com.imooc.maven01.model;
2 
3 public class HelloWorld {
4     public String sayHello() {
5         return "HelloWorld!";
6     }
7 }

  HelloWorldTest.java测试类

package com.imooc.maven01.model;

import org.junit.*;
import org.junit.Assert.*;

public class HelloWorldTest {
	@Test
	public void testHello() {
		Assert.assertEquals("HelloWorld!", new HelloWorld().sayHello());
	}
}

  第三步:配置pom.xml文件

  pom.xml

 1 <?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         <modelVersion>4.0.0</modelVersion>
 7 
 8         <groupId>com.imooc.maven01</groupId>
 9         <artifactId>maven01-model</artifactId>
10         <version>0.0.1-SNAPSHOT</version>
11         
12         <dependencies>
13             <dependency>
14                 <groupId>junit</groupId>
15                 <artifactId>junit</artifactId>
16                 <version>4.10</version>
17             </dependency>
18         </dependencies>
19 </project>

  第四步:编译项目、运行测试、打包项目

  编译项目 mvn compile

  此时在target目录下有两个文件夹,一个是项目编译生成的class字节码文件,另一个是maven状态文件。

  运行测试 mvn test

 运行测试会生成class字节码文件和一个测试报告文件。

  打包文件 mvn package

  运行打包命令会在target目录下生成一个jar包和pom属性文件。

 3.maven常用命令

mvn -v 查看版本

mvn compile 编译

mvn test 测试

mvn package 打包

mvn clean 删除target目标文件

mvn install 安装jar包到本地仓库中,打包到本地仓库之后其他的项目就可以在pom.xml文件中引入这个依赖。

  程序运行时如果需要某个依赖,它会在pom.xml文件中手动引入,pom.xml文件查找依赖的顺序:先在本地仓库寻找,如果maven的本地仓库没有这个依赖, 就会到maven的中央仓库寻找这个依赖并下载将其放到本地仓库中供项目进行引用。

4.maven自动创建目录骨架

  方式一:mvn archetype:generate 生成目录骨架 这种方式是按照提示进行选择

  方式二:mvn archetype:generate -DgroupId=组织名,公司网址的反写+项目名

                 -DartifactId=项目名-模块名

                 -Dversion=版本号

                 -Dpackage=代码所存在的包名

5.maven的坐标和仓库

  坐标

               构建

       仓库

              本地仓库和远程仓库

        镜像仓库

        更改仓库位置

6.maven的生命周期和插件

  完整的项目构建过程包括:

  清理、编译、测试、打包、集成测试、验证、部署

  Maven的生命周期:

  Clean 清理项目

          Pre-clean 执行清理前的工作

          Clean 清理上一次构建生成的所有文件

          Post-clean 执行清理后的文件

  Default 构建项目(核心)

          Compile test package install

  Site 生成项目站点

          Pre-site 在生成项目站点前要完成的工作

          Site 生成项目的站点文档

          Post-site 在生成项目站点后要完成的工作

          Site-deploy 发布生成的站点到服务器上

  Clean、compile、test、package、installl

7.pom.xml常用元素解析

  1 <?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         <!--指定了当前pom的版本-->
  7         <modelVersion>4.0.0</modelVersion>
  8         
  9         <groupId>反写的公司网址+项目名</groupId>
 10         <artifactId>项目名+模块名</artifactId>
 11         <!--第一个0表示大版本号
 12             第二个0表示分支版本号
 13             第三个0表示小版本号
 14             0.0.1
 15                 snapshot 快照版本
 16                 alpha 内部测试
 17                 beta 公测版本
 18                 release 稳定版本
 19                 GA 正式发布
 20         -->
 21         <version>0.0.1-SNAPSHOT</version>
 22         
 23         <!--打包方式
 24             默认是jar
 25             war zip pom
 26         -->
 27         <packageing></packageing>
 28         
 29         
 30         <!--项目描述名
 31             在产生项目文档是使用
 32         -->
 33         <name></name>
 34         <!--项目地址-->
 35         <url></url>
 36         <!--项目描述-->
 37         <description></dedication>
 38         <!--开发人员列表-->
 39         <developers></developers>
 40         <!--许可证的信息-->
 41         <licenses></licenses>
 42         <!--组织信息-->
 43         <organization></organization>
 44         
 45         <!--依赖列表-->
 46         <dependencies>
 47             <dependency>
 48                 <groupId></groupId>
 49                 <artifactId></artifactId>
 50                 <version></version>
 51                 <type></type>
 52                 <!--依赖的范围
 53                     默认的范围是compile
 54                     provides 只在编译和测试时运行
 55                     runtime
 56                     test
 57                     system
 58                     import
 59                 -->
 60                 <scope>test</scope>
 61                 <!--设置依赖是否可选
 62                     默认是false,子项目是继承的
 63                     如果是true,子项目必须显示的引入该依赖
 64                 -->
 65                 <optional></optional>
 66                 <!--排除依赖传递列表-->
 67                 <exclusions>
 68                     <exclusion>
 69                     </exclusion>
 70                 </exclusions>
 71             </dependency>
 72         </dependencies>
 73 
 74         <!--依赖的管理
 75             这里面的依赖不会被引入实际依赖中,它是供子模块继承用的
 76         -->
 77         <dependencyManagement>
 78             <dependencies>
 79                 <dependency>
 80                 </dependency>
 81             </dependencies>
 82         </dependencyManagement>
 83         
 84         <build>
 85             <!--插件列表-->
 86             <plugins>
 87                 <plugin>
 88                     <groupId></groupId>
 89                     <artifactId></artifactId>
 90                     <version></version>
 91                 </plugin>
 92             </plugins>
 93         </build>
 94         <!--子模块中对父模块pom的继承 -->
 95         <parent></parent>
 96         <!--用来聚合 -->
 97         <modules>
 98             <module></module>
 99         </modules>
100 </project>

8.依赖的范围

  ...

9.依赖的传递

  ...

10.依赖的冲突

  短路优先

  先声明先优先

11.maven的聚合与继承

  ...

posted @ 2018-05-27 07:55  TriHeart  阅读(154)  评论(0编辑  收藏  举报