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生命周期的目的是清理项目,它包含三个阶段:
- pre-clean 执行一些清理前需要完成的工作;
- clean 清理上一次构建生成的文件;
- post-clean 执行一些清理后需要完成的工作;
default生命周期
default生命周期定义了真正构建项目需要执行的所有步骤,它是所有生命周期中最核心的部分。其中的重要阶段如下:
- compile :编译项目的源码,一般来说编译的是src/main/java目录下的java文件至项目输出的主classpath目录中;
- test :使用单元测试框架运行测试,测试代码不会被打包或部署;
- package :接收编译好的代码,打包成可以发布的格式,如jar和war;
- install: 将包安装到本地仓库,供其他maven项目使用;
- deploy :将最终的包复制到远程仓库,供其他开发人员或maven项目使用;
site生命周期
site生命周期的目的是建立和发布项目站点,maven能够基于pom文件所包含的项目信息,自动生成一个友好站点,方便团队交流和发布项目信息。该生命周期中最重要的阶段如下:
- 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坐标
坐标的定义元素如下:
- groupId:定义当前项目(jar包)隶属的实际项目组。
- artifactId:定义当前项目(jar包)的名称;
- 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包。使用方法如下:
- 第一步:在pom.xml文件中书写dependencies标签,鼠标光标移入到dependencies标签中,按Alt+Insert键。会弹出一个选择框:
- 选择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初级(下):