首页 > 其他分享 >Maven使用指南的笔记

Maven使用指南的笔记

时间:2024-09-06 22:36:19浏览次数:10  
标签:xml src app 笔记 Maven test 使用指南 my mvn

  • 文档索引

  • Maven in 5 Minutes
    篇幅很短,快速上手,不求甚解。
    执行如下命令,创建项目的基础配置。

    mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.5 -DinteractiveMode=false
    

    对上述命令做一个简单的说明:

    • groupIdcom.mycompany.app
    • artifactIdmy-app

    上述命令执行完毕之后,在当前目录下创建目录my-app,执行命令tree -a my-app查看目录结构,如下:

    my-app/
    ├── .mvn
    │   ├── jvm.config
    │   └── maven.config
    ├── pom.xml
    └── src
        ├── main
        │   └── java
        │       └── com
        │           └── mycompany
        │               └── app
        │                   └── App.java
        └── test
            └── java
                └── com
                    └── mycompany
                        └── app
                            └── AppTest.java
    
    12 directories, 5 files
    
  • Maven Getting Started Guide
    完整的入门指导。
    常用的命令:

    • mvn clean,清理构建结果。
    • mvn compile,编译代码。
    • mvn test-compile,编译单元测试代码。
    • mvn test,编译代码和测试代码,运行单元测试代码。
    • mvn package,将项目打包。
    • mvn install,将项目的构建结果,安装到本地仓库内。

    父项目的pom.xml,样例如下:

    <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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
    
      <groupId>com.mycompany.app</groupId>
      <artifactId>app</artifactId>
      <version>1.0-SNAPSHOT</version>
      <packaging>pom</packaging>
    
      <modules>
        <module>my-app</module>
        <module>my-webapp</module>
      </modules>
    </project>
    

    项目的pom.xml,样例如下:

    <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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
    
      <groupId>com.mycompany.app</groupId>
      <artifactId>my-webapp</artifactId>
      <version>1.0-SNAPSHOT</version>
      <packaging>war</packaging>
    
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.11</version>
          <scope>test</scope>
        </dependency>
      </dependencies>
    </project>
    
  • Guide to naming conventions on groupId, artifactId, and version
    组件的groupIdartifactIdversion的命名规则。

  • Introduction to the Build Lifecycle

    使用Maven构建项目时,依次执行如下阶段:

    • validate
    • compile
    • test
    • package
    • verify
    • install
    • deploy
  • Introduction to the POM
    介绍pom.xml的组成,以及不同项目组合的定义方法。

  • Introduction to Build Profiles
    通过在settings.xml或者pom.xml中使用profile,可以为不同的构建场景定制构建过程和参数。
    执行如下命令,可以查看当前启用的profile。

    mvn help:active-profiles
    
  • Introduction to the Standard Directory Layout
    使用Maven来管理项目和构建时,基于约定大于配置的理念,预先定义了项目中各类文件的布局和目录命名。对于Java项目而言,默认的布局规则如下:

    • src/main/java,保存项目中的Java源码。
    • src/main/resources,保存项目中的配置文件。
    • src/main/filters,保存资源过滤器的配置文件。
    • src/main/webapp,保存Web项目的资源文件,比如html/css/js/图片比如jpeg或者png等。
    • src/test/java,保存项目中的单元测试代码。
    • src/test/resources,保存项目中单元测试代码依赖的配置文件。
    • src/test/filters,保存资源过滤器的配置文件。
    • src/assembly,保存项目构建时布局的配置文件。
    • target,保存构建的输出结果。

    其它目录不常用,因此此处不赘述。

  • Introduction to the Dependency Mechanism
    依赖管理中,相同软件的版本冲突,默认的处理规则。
    坐标中scope字段的可能取值:

    • compile,编译、运行时需要。

    • provided,编译时需要,运行时不需要。

    • runtime,编译时不需要,仅在运行时需要。

    • test,测试代码编译、测试代码运行时需要。

    • system,指定依赖本地的jar。
      样例如下:

      <dependency>
        <groupId>javax.sql</groupId>
        <artifactId>jdbc-stdext</artifactId>
        <version>2.0</version>
        <scope>system</scope>
        <systemPath>${java.home}/lib/rt.jar</systemPath>
      </dependency>
      
    • import,导入依赖,通常在dependencyManagement中使用,比如基于SpringBoot框架开发的应用。

    排除依赖的软件。

    <dependency>
      <groupId>group-a</groupId>
      <artifactId>artifact-a</artifactId>
      <version>1.0</version>
      <exclusions>
        <exclusion>
          <groupId>group-c</groupId>
          <artifactId>excluded-artifact</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    
  • Optional & Exclusion
    配置依赖时,可以增加属性optional,取值为true/false,样例如下:

    <dependency>
      <groupId>sample.ProjectA</groupId>
      <artifactId>Project-A</artifactId>
      <version>1.0</version>
      <scope>compile</scope>
      <optional>true</optional> <!-- value will be true or false only -->
    </dependency>
    

    在项目中没有实际使用过。

  • Settings Reference
    settings.xml的组成,各个标签的含义。
    样例模板,和关键标签,如下:

    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">
      <localRepository/>
      <interactiveMode/>
      <offline/>
      <pluginGroups/>
      <servers/>
      <mirrors/>
      <proxies/>
      <profiles/>
      <activeProfiles/>
    </settings>
    

    加载顺序:

    • ${user.home}/.m2/settings.xml
      用户目录下的settings.xml
    • ${maven.home}/conf/settings.xml
      Maven软件安装目录下的settings.xml
  • POM Reference
    pom.xml的组成,各个标签的含义。

  • FAQ

标签:xml,src,app,笔记,Maven,test,使用指南,my,mvn
From: https://www.cnblogs.com/jackieathome/p/18401171

相关文章

  • 子集卷积 学习笔记
    如果没有交集的情况,就可以做或运算卷积考虑交集,没有交集=大小和相同依次考虑集合的大小为0,1,...,n对每种情况,构造长度为(1<<n)的集合幂级数,只对size=i赋值枚举答案中集合的大小为0,1,...,n对每个i,枚举f中的贡献是(j),g中的贡献是(i-j)让(j)和(i-j)做或运算卷积,答案一定合法......
  • 学习笔记|鹏哥C语言——关键字
    一、 关键字typedeftypedef顾名思义是类型定义,这里应该理解为类型重命名。比如:二、 关键字static在C语言中:static是用来修饰变量和函数的1.修饰局部变量-称为静态局部变量2.修饰全局变量-称为静态全局变量3.修饰函数-称为静态函数三、 修饰局部变量......
  • 软件测试学习笔记丨Pytest的使用
    本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/221581.简介pytest是一个成熟的全功能python测试框架测试用例的skip和xfail,自动失败重试等处理能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试,接口自动化测试pytest有很多第三方插件,并......
  • maven导入本地jar
    引入lib下加载(加载过后打包,以后再次使用不用再次导入)1、首先创建一个用于创建jar包的项目,并测试能否成功运行 2、将项目打包 3、在需要引入的项目中创建lib目录 并把刚才打包的jar复制进去 4、通过dependency引入jar包groupId、artifactId、version要与jar包保持一......
  • 【Python学习笔记】第3章 你应如何运行程序
    这一章主要讲:如何启动Python程序、如何交互地输入代码、代码的各种运行方式。交互式命令行模式开始一个交互式会话在终端中,输入python:我们就开启了会话。结束会话按Ctrl+Z:系统路径如果我们要在终端中,输入python就可以启动,那么就需要设置环境变量PATH使其包含安装的python......
  • prometheus学习笔记之其他常用服务自动发现
    一、consul_sd_configsConsulSD配置允许从Consul的CatalogAPI检索抓取目标1.部署Consul 安装参考文档:https://developer.hashicorp.com/consul/install#linux,确认自己的操作系统和安装环境及版本,根据文档下载并安装unzip-qconsul_1.12.2_linux_amd64.zip#由于下载比......
  • Mybatis学习笔记(已完结)
    Mybatis-011.框架​ 框架相当于是一个脚手架,内部已经写好了很多代码,我们只要其基础上进行开发就可以提高我们的开发效率。​框架阶段学习:①先去学习如何使用框架②然后再使用熟练的情况下去猜测内部的原理③通过源码去验证自己的猜测。2.Mybatis介绍MyBatis是一款优......
  • STM32学习笔记——GPIO
    GPIO——GeneralPurposeInputOutput——通用输入输出出口特点:通用性、快速翻转、中断支持、支持多种工作模式。8种输入输出模式模式性质特征应用标识浮空输入数字输入可读取引脚电平,若引脚悬空,则电平不确定适用于需要读取外部信号的场景,但外部信号状态......
  • Python全网最全基础课程笔记(五)——选择结构+Python新特性Match
    本专栏系列为Pythong基础系列,每篇内容非常全面,包含全网各个知识点,非常长,请耐心看完。每天都会更新新的内容,搜罗全网资源以及自己在学习和工作过程中的一些总结,可以说是非常详细和全面。以至于为什么要写的这么详细:自己也是学过Python的,很多新手只是简单的过一篇语法,其实对......
  • InternLM 大模型实战营笔记-7
    基础岛第5关XTuner微调个人小助手认知目的:用internlm2-chat-1_8b模型,通过QLoRA的方式来微调一个自己的小助手1.微调前的模型对话进行端口映射,XXXXX是自己开发机的端口ssh-CNg-L8501:127.0.0.1:[email protected]激活环境,运行Stream......