Maven学习笔记

一 参考来源

  【慕课网-项目管理利器——maven】(https://www.imooc.com/learn/443)

二 学习笔记

【maven介绍及环境搭建】
简介:maven基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。
目录
  【bin】mvn运行脚本
  【boot】含一个类加载器框架
  【config】seeting:
  【lib】maven运行的一些依赖的自身or第三方的类库
下载:maven.apache.org
安装:
1.解压至目标安装路径下
2.配置系统环境变量
  M2_HOME:添加路径:D:Program Files (x86)Mavenapache-maven-3.5.4
  Path:添加路径 %M2_HOME%in
3.检验是否安装成功:【cmd:mvn -v】
【maven项目目录结构】
1.目录结构
src
  -main
  -java
    -package
  -test
    -java
    -package
  resources:存放资源和配置文件

  -webapp

    WEB-INF

2.创建两个Java类文件
【1. src/main/java/com/maven01/model】
package com.imooc.maven01.model;

public class HelloWorld {
  public String sayHello(){
    return "HelloWrold";
  }
}

【2.test//main/java/com/maven01/model】
package com.imooc.maven01.model;

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

public class HelloWorldTest{
  @Test
  public void testHello(){
    Assert.assertEquals("HelloWrold", (new HelloWorld()).sayHello());//非"HelloWrold",也会build failure
  }
}

【配置pom.xml】
1.pom.xml【项目根maven01目录下(与src并列)】
<?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.imooc.maven01</groupId>
<!-- 组织标识 -->
<artifactId>maven01-model</artifactId>
<!-- 项目名称 -->
<version>0.0.1SNAPSHOT</version>
<!-- 版本号 -->
<packaging>war</packaging> <!-- 打包格式,jar,war,pom,ear,rar,par,ejb,maven-plugin等 --><dependencies><dependency>

  <!-- 依赖项(第三方) -->
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.10</version>
</dependency>
<!-- <dependency>
-->

<!-- 依赖项(自定义项目) -->
<!-- <groupId>com.imooc.maven02</groupId>
-->
<!-- <artifactId>maven01-model</artifactId>
-->
<!-- <version>0.0.1SNAPSHOT</version>
-->
<!-- </dependency>

</dependencies>

</project>
【注释】
  在mvn compile的编译过程中,如果程序引用到其他的依赖包:会在pom.xml中查找,是否引用该依赖包的坐标(groupId,artifactId,version),它会在本地仓库汇总查找:如果仓库中有这些jar包,加入到classpath;反之,没有将会自动下载相应的jar包,并加入classpath中;程序继续执行。
2.cmd,切换至项目根目录下
  命令:mvn compile
  结果:BUILD SUCCESS
3.执行测试用例:mvn test
  结果:BUILD SUCCESS / FAILURE
4.查看项目文件结构
(项目根目录下多了一个tag文件夹)
src
target
  classes
  maven-status
  surefire-reports
  test-classes
pom.xml
【maven项目打包发布】
1.切换至项目根目录下
命令:mvn package
2.打包结果
项目根目录
target
maven01-model-0.0.1SNAPSHOT.jar
【maven常用构建命令】
1.mvn -v 查看maven版本
2.mvn compile 编译项目
3.mvn test 执行测试用例
4.mvn package 项目打包发布(jar包)
5.mvn clean 清除maven生成的target目录
6.mvn install 安装jar包到本地仓库中
【自动创建目录骨架】
1.archetype插件:用于创建符合maven规定的项目目录骨架
  1.创建项目空文件夹:maven03
  2.切换至项目maven03根目录下
  3.cmd命令:mvn archetype:generate
  =========================
  一次性构建:mvn archetype:generate    -DgroupId=组织名com.imooc.maven04
                      -DartifactId=项目名maven04-demo
                      -Dversion=版本号1.0.0SNAPSHOT
                      -Dpackage=待创建的包com.imooc.maven04.util
2.maven目录骨架规定
  src/main/java目录下:放置主代码
  src/test下:放置测试代码
【maven中的坐标和仓库】
1.坐标 (groupId,artifactId,version)
  (com.johnnyzen.XX)
  构件
  依赖的第三方仓库:http://mvnrepository.com
2.仓库:本地仓库/远程仓库
  优先找本地仓库,本地找不到仓库,会向互联网全球公布的仓库查找,若还找不到就会报错
  maven提供了一个默认下载的全球中央仓库(Central Repository)地址:https://repo.maven.apache.org/maven2
  全球中央仓库各第三方仓库检索地址:https://search.maven.org/
  设置本地仓库:
  1.打开maven安装目录下的配置文件
    D:Program Files (x86)Mavenapache-maven-3.5.4confsetting.xml
  2.配置<localRepository>
    <localRepository>D:Softwares Data[Public Files]MavenRepo</localRepository>
3.镜像仓库
  能够提供和中央仓库一样的仓库,且更快更稳定。
  如何修改镜像仓库地址:
  1.打开maven安装目录:D:Program Files (x86)Mavenapache-maven-3.5.4conf
  2.打开setting.xml
  3.<mirrors>中配置:
  <mirror>
    <id>maven.net.cn【mirrorId】</id>
    <mirrorOf>central【repositoryId】</mirrorOf>
    <name>central mirror in China【Human Readable Name for this Mirror.】</name>
    <url>http://maven.net.cn/content/groups/pulibc【http://my.repository.com/repo/path】</url>
  </mirror>
【在eclipse中安装maven插件以及创建maven项目】
1.检查是否已安装maven插件:Preferences>Maven
2.若未安装,可以:
  下载eclipse maven插件
  解压maven插件到eclipse目录的dropin目录下
3.打开Eclipse安装目录下的eclipse.ini文件【更改Eclipse默认运行的私有jre为公有配置的jre使与maven一致】
  添加:
  -vm
  -[JDK的bin目录路径]
4.打开Eclipse,更换JRE:Preferences>Java>Installed JREs>Add>[本机公有JDK/JRE]
  勾选本机公有的JDK
5.配置Eclipse上Maven的JDK配置为本机公有JDK:
  Preferences>Maven>Installations>Add>[选择 本机的Maven(路径)]
6.修改Eclipse上Maven的User Settings路径:
  Preferences>Maven>User Settings:[选择 本机的Maven(路径)下的setting.xml]
7.配置Java-Dmaven.multiModuleProjectDirectory
  Preferences>Java>Installed JREs>[选择公有JDK]>Edit
  Default VM arguments:-Dmaven.multiModuleProjectDirectory=$M2_HOME
8.重启Eclipse
9.创建Maven项目
  File>New Project>Maven>Maven Project>create simple project
  右键项目>Run As>Maven>goals:compile
【maven生命周期和插件】
1.完整的项目构建过程包括:
  清理/编译/测试/打包/集成测试/验证/部署
  清理 clean
    pre-clean 执行清理前的工作
    clean 清理上一次构建生成的所有文件
    post-clean执行清理后的文件
  构建项目 default(最核心)
    compile test package install
  生成项目站点 site
    pre-site 在生成项目站点前要完成的工作
    site 生成项目的站点文档
    post-site 在生成项目站点后要完成的工作
    site-deploy 发布生成的站点到服务器上
2.maven插件
【注释】
  maven所有的命令都是依赖于它的插件来完成的(Eg:clean compile等)
  maven的插件和文档的查看地址:maven.apache.org/plugins/index.html
                    http://mvnrepository.com/
  添加插件(source命令为例),在pom.xml中:
  <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>
  Run As:Maven>clean package
【maven中pom.xml解析】
  <groupId>反写的公司网址+项目名</groupId>
  <artifactId>项目名+模块名【实际项目中的模块/项目名称】</artifactId>
  <version>大版本号.分支版本号.小版本号 0.0.1【初始/SNAPSHOT快照/alpha内测/beta公测/release稳定/GA正式发布】</version>

  <packaging>打包格式,默认jar</packaging>
  <dependencies>
  <!-- 参见dependencies/dependency元素 -->
  <dependency>
  </dependency>
  </dependencies>
  <build> <!-- 构建项目需要的信息 --></build>
  <name>项目描述名</name>
  <description>项目描述</description>
  <url>项目地址</url>
  <developers>开发者</developers>
  <licenses>项目证书/协议</licenses>
  <organization>组织</organization>
  (更多见...note2-pom.xml详解https://www.cnblogs.com/hafiz/p/5360195.html
【maven依赖范围】dependencies/dependency/scope:
  compile 默认范围(编译 测试 运行 均有效);
  provided 测试+编译;
  runtime 测试+运行;
  test 仅测试;
  system 测试+编译(与本机系统相关联,可移植性差);
  import 导入的范围(只使用在dependencyManagement中,表示从其他的pom中导入dependency的配置);

【maven中聚合和继承】
  <modules> <!-- 本项目要聚合的三个子项目(模块) -->
  <module>../a-project/module<module>
  <module>../b-project/module<module>
  <module>../c-project/module<module>
  </modules>

  <parent>
  </parent>
【maven搭建web项目】
  -参考文献1:【eclipse+maven搭建web项目(非常详细)】https://blog.csdn.net/wx5040257/article/details/77388086
  -参考文献2:【Eclipse创建基于Maven的Web项目】https://blog.csdn.net/huijiahekele/article/details/78589680
  -参考文献3:【Eclipse 使用Maven 构建Web项目的最佳方式,我认为没有之一】https://blog.csdn.net/qing_gee/article/details/78923193

  0.创建maven Project > Next>filter 框搜索“webapp”(maven-archetype-webapp)
    若Eclipse卡顿崩溃,且因archetype异常,见博文:
    【使用MyEclipse新建maven项目时报An internal error occurred during: "Retrieving archetypes:". GC overhead limit】
      https://blog.csdn.net/qq_35661171/article/details/78480876
      https://blog.csdn.net/qq_30739519/article/details/51516667
  1.访问Tomcat官网,copy插件地址:
      http://tomcat.apache.org/maven-plugin.html
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat6-maven-plugin</artifactId>
        <version>2.2</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

 

原文地址:https://www.cnblogs.com/johnnyzen/p/9690912.html