Maven基础02

目录

  • 第一章:IDEA中使用Maven

    • 1.1-创建普通Java项目
    • 1.2-创建JavaWeb项目
  • 第二章:Maven常用命令
    • 2.1-常用命令
    • 2.2-IDEA中的Maven命令
    • 2.3-Maven指令的生命周期
  • 第三章:Maven的概念模型
  • 第四章:依赖管理
    • 4.1-Maven插件
    • 4.2-导入依赖
    • 4.3依赖范围
  • 第五章:自定义MavenWeb骨架

第一章:IDEA中使用Maven

1.1-创建普通Java项目

打开IDEA,创建空的项目

步骤1:

步骤2:

步骤3:

创建模块

步骤1

步骤2

步骤3

步骤4

步骤5

步骤6

步骤7

1.2-创建JavaWeb项目

创建一个空项目

步骤同上

在idea中设置本地Maven

步骤1

步骤2:

创建新的模块

步骤1:

步骤2:

步骤3:

步骤4:

步骤5:

步骤6:

步骤7:

步骤8:

步骤9:

步骤10:

步骤11:发布web

步骤12:打开pox.xml文件配置依赖(如:配置servlet相关jar包)


步骤13:启动运行

第二章:Maven常用命令

我们可以在 cmd 中通过一系列的 maven 命令来对我们的 maven-helloworld 工程进行编译、测试、运 行、打包、安装、部署。

2.1-常用命令

compile

compile 是 maven 工程的编译命令,作用是将 src/main/java 下的文件编译为 class 文件输出到 target 目录下。

cmd 进入命令状态,执行 mvn compile,如下图提示成功:

查看 target 目录,class 文件已生成,编译完成。

test

test 是 maven 工程的测试命令 mvn test,会执行 src/test/java 下的单元测试类。

cmd 执行 mvn test 执行 src/test/java 下单元测试类,下图为测试结果,运行 1 个测试用例,全部成功

clean

clean 是 maven 工程的清理命令,执行 clean 会删除 target 目录及内容。

package

package 是 maven 工程的打包命令,对于 java 工程执行 package 打成 jar 包,对于 web 工程打成 war 包。

install

install 是 maven 工程的安装命令,执行 install 将 maven 打成 jar 包或 war 包发布到本地仓库。

从运行结果中,可以看出: 当后面的命令执行时,前面的操作过程也都会自动执行

2.2-IDEA中的Maven命令

2.3-Maven指令的生命周期

maven 对项目构建过程分为三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互独立”, 这三套生命周期分别是:

  • Clean Lifecycle 在进行真正的构建之前进行一些清理工作。
  • Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等。
  • Site Lifecycle 生成项目报告,站点,发布站点。

第三章:Maven的概念模型

Maven 包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段 (phase)中插件(plugin)目标(goal)的逻辑。

项目对象模型 (Project Object Model): 一个 maven 工程都有一个 pom.xml 文件,通过 pom.xml 文件定义项目的坐标、项目依赖、项目信息、 插件目标等。

依赖管理系统(Dependency Management System) :通过 maven 的依赖管理对项目所依赖的 jar 包进行统一管理。

比如:项目依赖 junit4.9,通过在 pom.xml 中定义 junit4.9 的依赖即使用 junit4.9,如下所示是 junit4.9 的依赖定义:

<!-- 依赖关系 -->
<dependencies>
    <!-- 此项目运行使用 junit,所以此项目依赖 junit -->
    <dependency>
        <!-- junit 的项目名称 -->
        <groupId>junit</groupId>
        <!-- junit 的模块名称 -->
        <artifactId>junit</artifactId>
        <!-- junit 版本 -->
        <version>4.9</version>
        <!-- 依赖范围:单元测试时使用 junit -->
        <scope>test</scope>
    </dependency>
</dependencies>

一个项目生命周期(Project Lifecycle) :使用 maven 完成项目的构建,项目构建包括:清理、编译、测试、部署等过程,maven 将这些 过程规范为一个生命周期,如下所示是生命周期的各各阶段:

maven 通过执行一些简单命令即可实现上边生命周期的各各过程,比如执行 mvn compile 执行编译、 执行 mvn clean 执行清理。

一组标准集合 :maven 将整个项目管理过程定义一组标准,比如:通过 maven 构建工程有标准的目录结构,有 标准的生命周期阶段、依赖管理有标准的坐标定义等。

插件(plugin)目标(gobal) :maven 管理项目生命周期过程都是基于插件完成的。

第四章:依赖管理

4.1-Maven插件

Maven是一个核心引擎,提供了基本的项目处理能力和建设过程的管理,以及一系列的插件是用来执行实际建设任 务。maven插件可以完成一些特定的功能。例如,集成jdk插件可以方便的修改项目的编译环境;集成tomcat插件 后,无需安装tomcat服务器就可以运行tomcat进行项目的发布与测试。在pom.xml中通过plugin标签引入maven 的功能插件。

JDK编译版本的插件

<!-- jdk版本插件 -->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.2</version>
    <configuration>
        <source>1.7</source>
        <target>1.7</target>
        <encoding>UTF-8</encoding>
        <showWarnings>true</showWarnings>
    </configuration>
</plugin

Tomcat7服务端的插件

配置

<!-- tomcat7插件 -->
<plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.1</version>
    <configuration>
        <port>8080</port>
        <server>tomcat7</server>
    </configuration>
</plugin>

运行

tomcat插件注意问题

Maven的中央仓库中只有Tomcat7.X版本的插件,而之前我们使用的是8.X的版本,如果想使用Tomcat8.X的 插件可以去其他第三方仓库进行寻找,或者使用IDEA集成外部Tomcat8极其以上版本,进行项目的发布。

4.2-导入依赖

导入依赖坐标,无需手动导入jar包就可以引入jar。在pom.xml中使用标签引入依赖。

导入junit的依赖

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>3.8.1</version>
    <scope>test</scope>
</dependency>

导入servlet的依赖

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
    <scope>provided</scope>
</dependency>

其他jar包依赖搜索

网址:https://mvnrepository.com/

搜索

点击进入选择版本查看

4.3依赖范围

A 依赖 B,需要在 A 的 pom.xml 文件中添加 B 的坐标,添加坐标时需要指定依赖范围,依赖范围包 括:

  • compile:编译范围,指 A 在编译时依赖 B,此范围为默认依赖范围。编译范围的依赖会用在 编译、测试、运行,由于运行时需要所以编译范围的依赖会被打包。
  • provided:provided 依赖只有在当 JDK 或者一个容器已提供该依赖之后才使用, provided 依 赖在编译和测试时需要,在运行时不需要,比如:servlet api 被 tomcat 容器提供。
  • runtime:runtime 依赖在运行和测试系统的时候需要,但在编译的时候不需要。比如:jdbc 的驱动包。由于运行时需要所以 runtime 范围的依赖会被打包。
  • test:test 范围依赖 在编译和运行时都不需要,它们只有在测试编译和测试运行阶段可用, 比如:junit。由于运行时不需要所以 test范围依赖不会被打包。
  • system:system 范围依赖与 provided 类似,但是你必须显式的提供一个对于本地系统中 JAR 文件的路径,需要指定 systemPath 磁盘路径,system依赖不推荐使用。

在 maven-web 工程中测试各各 scope。

测试总结:

  • 默认引入 的 jar 包 ------- compile 【默认范围 可以不写】(编译、测试、运行 都有效 )
  • servlet-api 、jsp-api ------- provided (编译、测试 有效, 运行时无效 防止和 tomcat 下 jar 冲突)
  • jdbc 驱动 jar 包 ---- runtime (测试、运行 有效 )
  • junit ----- test (测试有效)

依赖范围由强到弱的顺序是:compile>provided>runtime>test

第五章:自定义MavenWeb骨架

在新建的MavenWebApp项目模块基础上

设置pom,添加常用的依赖包

在main目录中初始化java源代码目录、resources配置资源目录、wepApp页面资源目录等

在pom.xml中添加如下插件

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-archetype-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>

选中项目,用maven执行命令:archetype:create-from-project

在target目录下生成如下项目

进入到 生成好的 target →generated-resources→arthetype下

安装会将该项目存入本地仓库中

在任意Maven项目中执行命令:archetype:crawl

将会在本地仓库目录中生成一个仓库项目名单:archetype-catalog.xml

该文件中记录中本地仓库的所有项目的名称、版本号等。

用自定义Maven骨架创建新的项目

原文地址:https://www.cnblogs.com/lpl666/p/12181355.html

时间: 2024-10-13 23:28:18

Maven基础02的相关文章

小白之Python-基础中的基础02

Python-基础中的基础02 继续整理笔记,反复练习!fighting! -----------------华丽的分界线-------------变量:第一次出现叫做定义变量,再次出现为为该变量赋值>>>money=3.5  #定义money变量>>>money=4.5 >>>money=3.5 #定义money变量 >>>money=4.5 #为money变量重新赋值 >>>print money #打印mone

Linux命令工具基础02 文件及目录管理

文件及目录管理 文件管理不外乎文件或目录的创建.删除.查询.移动,有mkdir/rm/mv 文件查询是重点,用find来进行查询:find的参数丰富,也非常强大: 查看文件内容是个大的话题,文本的处理有太多的工具供我们使用,在本章中只是点到即止,后面会有专门的一章来介绍文本的处理工具: 有时候,需要给文件创建一个别名,我们需要用到ln,使用这个别名和使用原文件是相同的效果: 创建和删除 创建:mkdir 删除:rm 删除非空目录:rm -rf file目录 删除日志 $rm *log 等价: $

java基础学习05(面向对象基础02)

面向对象基础02 实现的目标 1.String类的使用 2.掌握this关键字的使用3.掌握static关键字的使用 String类 实例化String对象一个字符串就是一个String类的匿名对象,就是已经开辟了堆内存空间的并可以直接使用的对象.1.采用直接赋值的方式进行操作. String name = "zhangsan"; 使用这种方式,如果一个字符串已经被一个名称所引用,则以后再有相同的字符串声明时,就不会再开辟内存空间.2.直接调用String类的构造方法(public S

C#语言基础02

字符串:string s="ab";string s1="a\nb";//n:newline或者next的意思. string s="a\\b"; string s="c:\\temp\\fasdf\\dd\\aaa\\1.jpg";stirng s="\\\\"; string [email protected]"\\\\"; //前边加@代表不把\当成转义字符.string [ema

【C++基础 02】深拷贝和浅拷贝

我的主题是,每天积累一点点. =========================================== 在类定义中,如果没有提供自己的拷贝构造函数,则C++提供一个默认拷贝构造函数. C++提供的默认拷贝构造函数的工作方法是:完成一个成员一个成员的拷贝.如果成员是类对象,则条用其拷贝构造函数或者默认拷贝构造函数. 简单的自定义拷贝构造函数: class Student{ public: //拷贝构造函数 Student(Student& s) { a = s.a; } protec

iOS基础 02 StoryBoard 故事板文件

iOS基础 02 StoryBoard 故事板文件 目录: 1. 故事板的导航特点 2. 故事板中的Scene和Segue 3. 本文最后 在上篇HelloWorld工程中有一个Main.storyboard文件,它被称为“故事板”(storyboard)文件. 它可以描述应用中有哪些界面,界面有哪些控件以及它们的事件. 此外,故事板还能描述界面之间是如何导航的. 1. 故事板的导航特点 在包含多个视图控制器的情况下,采用故事板管理比较方便,而且故事板还可以描述界面之间的导航关系. 下面我们举例

Java基础02 方法与数据成员(转载)

对象中的数据成员表示对象的状态.对象可以执行方法,表示特定的动作. 此外,我们还了解了类(class).同一类的对象属于相同的类型(type).我们可以定义类,并使用该定义来产生对象. 调用同一对象的数据成员 方法可以调用该对象的数据成员.比如下面我们给Human类增加一个getHeight()的方法.该方法返回height数据成员的值: public class Test{    public static void main(String[] args){        Human aPer

Android基础-02

Android基础-02 1.单元测试的相关概念 测试分类: 1.根据是否知道源代码分类: 黑盒测试: 白盒测试: 2.根据测试的粒度: 方法测试:写完一个能够独立运行的方法后就去测试: 单元测试:写完一个能够运行的业务逻辑单元就去测试:JUnit单元测试: 模块测试:对模块做整体测试: 集成测试:对整个软件做集成测试:与服务器端做链条测试: Debug调试:使用debug调试程序: 3.根据测试的次数分类: 压力测试:LoadRunner.Jmeter: 冒烟测试:在同一时间内高频次的访问应用

第七章、函数的基础02

目录 第七章.函数的基础02 一.函数的定义 二.为何用函数 三.如何用函数 第七章.函数的基础02 一.函数的定义 定义:在程序中,函数就好比某个功能的工具,准备工具就是定义了函数,遇到应用场景拿来用就是函数的调用 二.为何用函数 解决以下三个问题: 程序冗余 长须的拓展性差 程序的可读性差 三.如何用函数 先定义,后调用 定义函数 def 函数名(param1.param2--): """ 函数功能的描述信息 :param1:描述 :param2:描述 :return:返