Maven初级(中)

简介: Maven初级

Maven初级(上):https://developer.aliyun.com/article/1492443


2.2 java工程目录简介

说明:

1).idea和maven-java1.iml只要在idea中创建工程都会存在的,idea生成的,不用关心

2)pom.xml是maven的核心配置文件,我们会在这个配置文件配置依赖。下面会讲解

3)main:主代码,在实际开发中是项目上线运行的

a:java:存放java代码的

b:resources:存放配置文件的,相当于以前创建的java工程中的src。例如存放mybatis、数据库连接池的配置文件。这个目录只能存放配置文件。

4)test:存放测试的代码,项目上线之前先进行测试,然后在上线。

a:java:存放编写java的测试的代码,例如junit测试


2.3 运行java代码

1.在main目录的java目录上右键创建包

2.在创建好的包上右键创建java类

3.编写以下代码进行测试:

package com.itheima.sh.maven_helloworld_01;
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("hello maven..");
    }
}

运行程序:点击main方法左侧的绿色小三角,点击图标1 或者图标2 运行程序:

运行结果:如果控制台上能够正常打印如下信息,则说明工程创建没问题:


四、maven项目构建的生命周期(了解)


1、maven项目构建的生命周期


1.1 生命周期是什么

在Maven出现之前,项目构建的生命周期就已经存在,软件开发人员每天都在对项目进行清理,编译,测试及部署。虽然大家都在不停地做构建工作,但公司和公司间,项目和项目间,往往使用不同的方式做类似的工作。

Maven的生命周期就是为了对所有的构建过程进行抽象和统一。Maven从大量项目和构建工具中学习和反思,然后总结了一套高度完美的,易扩展的生命周期。这个生命周期包含了项目的清理,初始化,编译,测试,打包,集成测试,验证,部署和站点生成等几乎所有构建步骤。

Maven的生命周期是抽象的,这意味着生命周期本身不做任何实际工作,在Maven的设计中,实际任务(如源代码编译)都交由插件来完成。


1.2 maven的三套生命周期

maven拥有三套相互独立的生命周期,分别是clean,default和site。clean 生命周期的目的是清理项目default 生命周期的作用是构建项目site 生命周期的目的是构建项目站点

maven的生命周期都对应着具体的命令如下:

clean生命周期

clean生命周期的目的是清理项目,它包含三个阶段:

  1. pre-clean 执行一些清理前需要完成的工作;
  2. clean 清理上一次构建生成的文件;
  3. post-clean 执行一些清理后需要完成的工作;
default生命周期

default生命周期定义了真正构建项目需要执行的所有步骤,它是所有生命周期中最核心的部分。其中的重要阶段如下:

  1. compile :编译项目的源码,一般来说编译的是src/main/java目录下的java文件至项目输出的主classpath目录中;
  2. test :使用单元测试框架运行测试,测试代码不会被打包或部署;
  3. package :接收编译好的代码,打包成可以发布的格式,如jar和war;
  4. install: 将包安装到本地仓库,供其他maven项目使用;
  5. deploy :将最终的包复制到远程仓库,供其他开发人员或maven项目使用;
site生命周期

site生命周期的目的是建立和发布项目站点,maven能够基于pom文件所包含的项目信息,自动生成一个友好站点,方便团队交流和发布项目信息。该生命周期中最重要的阶段如下:

  1. site :生成项目站点文档;


2、maven生命周期相关命令

我们使用以下命令可以完成maven生命周期,演示生命周期的命令必须在pom.xml所在的目录下打开dos窗口然后输入如下命令进行演示。

1.找到pom.xml文件位置

2.在pom.xml文件位置输入cmd打开dos窗口

mvn clean:调用clean生命周期的clean阶段,清理上一次构建项目生成的文件;
mvn compile :编译src/main/java中的java代码;
mvn test :编译并运行了test中内容 ;
mvn package:将项目打包成可发布的文件,如jar或者war包; 
mvn install :发布项目到本地仓库 ;
2.1、mvn clean

clean命令的作用是清理项目编译或打包后生成的文件,具体对应maven项目中的target目录;

需求:清理存储上一次构建项目生成的文件target.

未清理前:

清理之后:

我们发现不存在target目录了。


2.2、mvn compile

compile命令的作用是编译src/main/java中的java代码编译成可直接运行的class文件。编译完成后maven项目会自动创建一个target目录来存储这些文件。

2.3、mvn test

test命令的作用是编译并运行maven项目的src/test目录下的junit测试代码。注意:只能运行junit测试代码。 并且使用test运行的测试类的类名必须以Test结尾,否则不会运行,不会看到结果。

在test/java目录下创建一个测试类,书写测试方法,代码如下:

package com.itheima.sh.maven_test_01;
import org.junit.Test;
public class MavenTest {
    @Test
    public void show() {
        System.out.println("show....");
    }
}

在dos窗口输入的测试命令:

mvn test

编译后生成的文件:

运行日志:

注意:

1.test命令只能运行test目录下的junit包下的类

2.test命令也可以运行多个测试方法:

package com.itheima.sh.maven_test_01;
import org.junit.Test;
public class MavenTest {
    @Test
    public void show() {
        System.out.println("show............");
    }
    @Test
    public void show1() {
        System.out.println("show1............");
    }
    @Test
    public void show2() {
        System.out.println("show2............");
    }
}

2.4、 mvn package

package命令是将项目打包成可以发布的包。maven项目常见的打包方式有两种:

1)maven的java project会打成jar包。

2)maven的web project会打成war包。

打包完成后将生成的文件存放在target目录中。

命令使用格式:

mvn package

注意:每次打包前还会再次执行所有test命令

2.5、 mvn install

install命令是将当前的项目打包并发布到本地仓库中,供本地的其他maven项目使用。项目发布的路径:本地仓库路径/groupId/artifactId/

注意:每次安装前还会再次执行所有test命令

2.6、mvn tomcat:run

tomcat:run表示部署项目,项目上线运行。能够部署项目都是web项目。我们这里演示部署web项目。这里启动tomcat并不是使用idea中的tomcat,而是maven自带的。所以我们部署好项目之后发现idea中的tomcat并没有启动。

停止服务器:

无法访问服务器了:

注意:使用maven在命令行中部署项目,一定要停止idea中的tomcat。否则,在命令行中不会启动成功tomcat。


3、maven生命周期相关插件

maven的核心包只有几兆大小,核心包中仅仅定义了抽象的生命周期。生命周期的各个阶段都是由插件完成的,它会在需要的时候下载并使用插件,例如我们在执行mvn compile命令时实际是在调用maven的compile插件来编译java源码:

我们使用IDEA创建maven项目后,就不需要再手动输入maven的命令来构建maven的生命周期了。IDEA给每个maven构建项目生命周期各个阶段都提供了图形化界面的操作方式。具体操作如下:


3.1 打开maven视图

依次打开:View–》Tool Windows–》Maven Projects

打开IDEA编辑区右侧:Maven Projects会弹出如下窗口,打开窗口中的Lifecycle即可看到相关命令。

3.2 执行命令

双击Lifecycle下的相关命令图标即可执行对应的命令。或者点击运行按钮:



五、maven应用详解【重点】


maven是一个项目管理工具,其中依靠于一个很重要的xml文件:pom.xml。我们接下来学习下pom.xml文件的配置。


1、pom配置详解

pom(Project Object Model)指的是项目对象模型,用来描述当前的maven项目。使用pom.xml文件来实现。

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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.heima.maven</groupId>
    <artifactId>maven-web2</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>
</project>

【pom文件详解】

1. <project> :pom文件的根标签,表示当前maven项目;
2. <modelVersion>: 声明项目描述符遵循哪一个POM模型版本。模型本身的版本很少改变,虽然如此,但它仍然是必不可少的,目前POM模型版本是4.0.0;
3. 坐标:定位项目在本地仓库中的位置,下面三个标签组成一个坐标。
    1)<groupId>:maven项目组织id标识符,一般是公司域名倒过来写<groupId>com.heima.maven</groupId>
  2)<artifactId>:项目的标识符--项目名。<artifactId>maven-web2</artifactId>
  3) <version>:项目的版本号;<version>1.0-SNAPSHOT</version>
4. <packaging>:maven项目的打包方式一般配置jar或者war;


2、依赖管理【重点】

Maven的作用:1.构建项目(maven项目在任何一个开发工具中结构都是一样的)及项目的生命周期;2.依赖管理;3.插件管理;

Maven的一个核心的作用就是管理项目的依赖,引入我们所需的各种jar包等。为了能自动化的解析任何一个Java构件,Maven必须将这些Jar包或者其他资源进行唯一标识,这是管理项目的依赖的基础,也就是我们之前说的坐标。包括我们自己开发的项目,也是要通过坐标进行唯一标识的,这样才能在其它项目中进行依赖引用。


2.1 Maven坐标

坐标的定义元素如下:

  1. groupId:定义当前项目(jar包)隶属的实际项目组。
  2. artifactId:定义当前项目(jar包)的名称;
  3. version:定义当前项目(jar包)的版本号;

通过上面三个参数我们就能够确定一个唯一版本号的jar包。

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>4.1.2.RELEASE</version>
</dependency>


2.2 依赖导入
1、使用IDEA工具导入:

IDEA中给我们提供了一种搜索jar包的方式,帮助我们快速导入jar包。使用方法如下:

  1. 第一步:在pom.xml文件中书写dependencies标签,鼠标光标移入到dependencies标签中,按Alt+Insert键。会弹出一个选择框:

  2. 选择Dependency后会弹出一个搜索框:输入要添加的jar包的名字

选择需要的jar包后按回车键即可自动添加此依赖;

注意:在idea中还可以直接输入要使用的包。

2、从远程仓库中获取坐标:

如果我们导入的依赖本地仓库中没有,使用IDEA搜索就搜索不到了,我们需要从网络中查找这个依赖的坐标,然后将其添加到pom文件中。添加完成之后,maven会帮我们从私服或中央仓库中下载该依赖。

搜索依赖坐标的方法:

1.从私服中获取,联网的情况下可以使用阿里云私服,在教室使用局域网可以连接传智私服。

阿里云私服地址:

http://maven.aliyun.com/nexus/content/groups/public

传智局域网私服地址:

http://192.168.50.22:8081/nexus/content/groups/public/

1).这里访问阿里云私服

阿里云首页:

https://maven.aliyun.com

2).复制上述的依赖到pom.xml文件中。

如果私服中也没有找到那么就只能到中央仓库中查找了。

Maven初级(下):

相关文章
|
6月前
|
存储 Java Apache
|
缓存 Java Maven
maven问题整理
maven问题整理
84 0
|
6月前
|
Java Maven 索引
|
存储 Java 测试技术
新手Maven入门(二)
Maven 构建的生命周期是一个明确定义的用于构建和分发构件的过程。有 3 个内置的构建生命周期:clean、default 和 site。
90 0
|
6月前
|
Java 关系型数据库 MySQL
Maven教学--上
Maven教学--上
117 5
|
XML 存储 Java
maven的入门使用
maven的入门使用
59 0
|
前端开发 Java 数据库连接
【小白写工程】关于Maven的Archetype
【小白写工程】关于Maven的Archetype
129 0
|
存储 XML Java
新手Maven入门(一)
Maven 是一种用来管理 Java 项目的工具,但不是那种用来管理资源规划和调度的工具。它处理的是管理一个具体的项目所涉及的各种任务,如编译、测试、打包、文档以及分发。
97 0
|
Java 程序员 Maven
【JavaWeb】带你走进Maven
如今我们构建一个项目需要用到很多第三方的类库,如写一个使用Spring的Web项目就需要引入大量的jar包。一个项目Jar包的数量之多往往让我们瞠目结舌,并且Jar包之间的关系错综复杂,一个Jar包往往又会引用其他Jar包,缺少任何一个Jar包都会导致项目编译失败。
73 0
|
消息中间件 Dubbo Java
【项目管理工具】maven快速入土
【项目管理工具】maven快速入土
203 0
【项目管理工具】maven快速入土