• 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>

     

  • 相关阅读:
    petshop4.0 详解之三(PetShop数据访问层之消息处理)
    MemberShip的使用
    PetShop 详解之一 系统架构设计
    PetShop4,错误提示:没有为 SQL 缓存通知启用数据库"MyCard"
    PetShop4,错误提示:System.Web.Security.SqlMembershipProvider”要求一个与架构版本“1”兼容的数据
    【Linux从零开始】:1.文件与目录的管理和配置(1)
    【笔记】在.NET中使用强类型有以下优点:
    【好文收藏】:Linq to DataSet
    【好文收藏】泛型与非泛型的比较(百度文库)
    HDOJ1102 Constructing Roads[Prim()]
  • 原文地址:https://www.cnblogs.com/johnnyzen/p/9690912.html
Copyright © 2020-2023  润新知