MAVEN学习笔记

Posted Lexin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MAVEN学习笔记相关的知识,希望对你有一定的参考价值。

一、MAVEN下载

1.下载地址:http://maven.apache.org/download.cgi

 

二、MAVEN安装

1.解压下载的压缩包

2.配置MAVEN目录的bin目录路径到环境变量

3.在DOS中输入mvn -v检测是否安装成功,成功会显示mvn环境信息

 

三、第一个项目

1.项目基本目录结构

 -package 是类文件对应的包目录

1.在main的java中建立类HelloWorld 

package com.lexin.maven01.model;

public class HelloWorld {
  public String sayHello() {
    return "Hello World!";
  }
}

 

2.在test的java中建立测试类HelloWorldTest 

package com.lexin.maven01.model;

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

public class HelloWorldTest {

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

}

 

 3.在src同级目录中新建pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>

    <groupId>com.lexin.maven01</groupId>
    <artifactId>maven01-model</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.10</version>
        </dependency>
    </dependencies>
</project>

 

 

四、MAVEN常用命令

  mvn -v:查看MAVEN版本

  mvn compile进行编译:编译成功后会生成target目录,里面有class文件,报告等

  mvn test进行测试:测试成功后会在target目录下的test-classes目录产生相应的测试类的class文件

  mvn package打包:会自动将项目打包成jar文件,输出路径为target目录

  mvn clean:删除target目录

  mvn install:安装jar包到本地仓库中

 

五、自动构建目录的两种方式

1.archetype:generate :按照提示进行选择

2.archetype:generate -DgroupId=组织名.公司网址的反写+项目名

          -DartifactId=项目名-模块名

          -Dversion=版本号

          -Dpackage=代码所存在的包名

 

六、MAVEN的坐标和仓库

坐标:即groupId、artifactId、version所构成的一个独有的坐标

仓库:

  1.仓库分为本地仓库和远程仓库

    1)MAVEN的默认仓库地址

    在MAVEN目录下的lib目录下的maven-model-builder-3.5.0.jar文件中的pom文件是MAVEN的默认pom,下面就是MAVEN默认的远程仓库地址

 <repositories>
    <repository>
      <id>central</id>
      <name>Central Repository</name>
      <url>https://repo.maven.apache.org/maven2</url>
      <layout>default</layout>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
  </repositories>

 

    2)MAVEN的镜像仓库地址配置

    在MAVEN目录下的conf目录下的settings.xml文件中<mirrors>标签中的内容就是镜像地址的配置

<mirror>
      <id>mirrorId</id>
      <mirrorOf>repositoryId</mirrorOf>
      <name>Human Readable Name for this Mirror.</name>
      <url>http://my.repository.com/repo/path</url>
</mirror>

    

    3)更改本地仓库的位置

    MAVEN默认的本地仓库位置为C:\\Users\\用户目录\\.m2\\repository

    在settings.xml文件中<localRepository>标签中修改本地仓库位置,注意路径为/反斜杠分隔!

  

六、eclipse安装MAVEN插件

1.下载MAVEN插件放入eclipse目录下dropins目录中

2.重启eclipse

3.点击window -->  preferences -->  MAVEN :MAVEN需要使用JDK,如未配置JDK需要配置好JDK,具体步骤如下:

  1)打开eclipse根目录下的eclipse.ini文件

  2)添加如下代码

-vm
javaw.exe路径

4.修改eclipse默认JRE

5.更改MAVEN默认配置

  1)window-->preferences-->MAVEN-->installations:选择本地MAVEN安装目录

  2)window-->preferences-->MAVEN-->User Setting:配置MAVEN配置文件,选择MAVEN的Setting文件

6.新建一个MAVEN项目

  1)配置工作空间路径

  2)配置项目Id

  3)右击pom.xml-->Run As-->MAVEN build...-->Goals输入命令如:compile或者package等等

7.大功告成!

 

七、MAVEN生命周期

1.clean:清理项目

  1)pre-clean:执行清理前的工作

  2)clean:清理上一次构建生成的所有文件

  3)post-clean:执行清理后的文件

2.default:构建项目(最核心)

  compile  test  package  install

3.site:生成项目站点

  1)pre-site:在生成项目站点前要完成的工作

  2)site:生成项目的站点文档

  3)post-site:在生成项目站点后要完成的工作

  4)site-deploy:发布生成的站点到服务器上

4.在执行某一阶段时,会将该阶段之前的阶段依次执行

 

八、pom.xml常用元素介绍

<project>是pom的跟元素,包含了pom的约束信息

<modelVersion>指定了当前pom的版本,也是pom必须的元素

<groupId>主项目标识,反写的公司网址+项目名

<artifact>模块标识,项目名+模块名

<version>项目版本号,一般由3个数字表示,第一个0表示大版本号,第二个0表示分支版本号,第三个0表示小版本号

  例:0.0.1

   snapshot:快照

   alpha:内测

   beta:公测

   Release:稳定

   GA:正式发布

<packaging>表示打包方式,默认为打包成JAR,也可打包成其他类型,如:war zip pom等

<name>项目描述名

<url>项目地址

<description>项目描述

<developers>开发人员列表

<licenses>许可证信息

<organization>组织信息

<dependencies>依赖列表

<dependency>依赖项:可指定依赖包的groupId atifactId version type scope(依赖范围,有效范围)等信息

<optional>有true false两个值,默认为false,用于设置依赖是否可选

<exclusions>排除依赖传递列表

<exclusion>排除依赖传递项

<dependencyManagement>依赖管理

<build>为构建的行为提供支持

<plugins>插件列表

<plugin>插件项,需要指定坐标信息groupId atifactId version等

<parent>用于子模块对于父模块pom的继承

<modules>模块列表,聚合运行多个的MAVEN项

<module>模块项

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <!-- 指定了当前pom的版本 -->
  <modelVersion>4.0.0</modelVersion>

  <groupId>反写公司网址+项目名</groupId>
  <artifactId>项目名+模块名</artifactId>
  <!-- 
      第一个0表示大版本号
      第二个0表示分支版本号
      第三个0表示小版本号
      0.0.1
      snaphost:快照
      alpha:内测
      beta:公测
     Release:稳定
     GA:正式发布
   -->
  <version></version>
  <!-- 
      设置打包格式
      默认是jar
      war zip pom
   -->
  <packaging></packaging>
  <!-- 项目描述名 -->
  <name></name>
  <!-- 项目地址 -->
  <url></url>
  <!-- 项目描述 -->
  <description></description>
  <!-- 开发人员列表 -->
  <developers></developers>
  <!-- 许可证信息 -->
  <licenses></licenses>
  <!-- 组织信息 -->
  <organization></organization>
  
  <!-- 依赖列表 -->
  <dependencies>
      <!-- 依赖项 -->
      <dependency>
          <groupId></groupId>
          <artifactId></artifactId>
          <version></version>
          <type></type>
          <!-- 依赖范围 -->
          <scope></scope>
          <!-- 设置依赖是否可选,默认为false,
              false子项目默认继承该依赖
              true子项目必须显式引用该依赖 
          -->
          <optional></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>
  <!-- 用于子模块对于父模块pom的继承 -->
  <parent></parent>
  <!-- 聚合运行多个MAVEN项目 -->
  <modules>
      <module></module>
  </modules>
  
</project>

 

九、MAVEN依赖

MAVEN依赖范围(scope)一共有六种:

1.compile:默认的范围,编译测试运行都有效

2.provided:在编译和测试的时有效

3.runtime:在测试和运行时有效

4.test:只在测试时有效

5.system:与本机系统有相关联,可移植性差

6.import:导入的范围,它只使用在dependencyManagement中,表示从其他的POM中导入dependency的配置

 

依赖的传递性:需要将父类pom install到本地仓库中, 子类pom在<dependency>中加入父类依赖坐标 即可调用

在<dependency>中运用<exclusions> <exclusion>来排除所不需要的父类pom

 

依赖冲突

1.短路优先:

  有以下两条依赖:A->B->C->X(JAR)和A->D->X(JAR),那么A-D-X这条优先解析

2.先声明优先:

  在依赖路径长度相同时,按照代码顺序,先声明依赖谁就继承谁的依赖

 

十、聚合和继承

MAVEN聚合:聚合实际上是对多个项目同时进行做处理,比如编译、打包等。做法如下:创建一个新的maven项目,用于做其它项目的聚合,然后把pom.xml文件里的package标签里的jar改成pom,并去掉依赖,然后添加modules把其它项目引进来。

MAVEN继承: 类似java继承,将重复性的写入一个父类pom中,在父类中<packaging>为pom

  子类中使用<parent>标签来将父类引入项目中

: 对于<version>,可在<properties>中配置标签<spring.version>

  并在<version>中用${spring.version}来进行提取。

 

十一、用MAVEN构建第一个WEB项目

 

创建web项目的过程:
1、使用maven创建一个web类型的maven项目。
2、添加servlet插件的依赖pom.xml。
3、添加src源文件夹。
4、修改jer的版本。
5、查看src输出的文件夹。
6、添加服务器插件的依赖到pom.xml。

 

以上是关于MAVEN学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

Maven学习笔记

maven 学习笔记--简介

[原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等(代码片段

Maven学习笔记

hadoop 学习笔记-2wordcount 完整实例

学习笔记依赖管理maven学习笔记