- 需求:说实话,我是为了jar包能够集到项目中写的
开始学习maven
- Maven简介
Maven是Apache开源组织奉献的一个开源项目。Maven的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM)。开发人员只需要做一些简单的配置,就可以批量完成项目的构建,报告和文档的生成工作。
Maven可以统一管理所有的依赖jar,甚至是不同的版本。程序员可以动态的将自己写好的模块打包成jar包让他管理。需要的时候,可以直接通过简单的描述告诉maven,他会帮助程序员找出来,集成到项目中。 - 安装maven之前的准备()
- 下载合适的JDK安装
- 配置JDK环境目录
- Maven的安装与设置
2, 3步具体链接
Maven的第一个案例
- Maven项目主要有一下目录:
src/main/java:存放项目的java源代码
src/main/resources,用来存放项目相关的资源文件(配置文件)
src/test/java:存放项目的测试java源代码
src/rest/java:用来存放运行测试代码时所依赖的资源文件
pom.xml:配置maven管理的所有内容
构建maven项目的的命令与信息
- 命令。命令很简单,就是创建项目的命令create.
人们把要调用那个软件的create命令创建项目叫做插件(plugin)。创建项目的插件叫做Archetype插件(archetype-plugin) - 信息。和项目相关的信息包括groupId(组ID),artifactId(构建Id),packageName(包名),version(版本)
其实,packageName和version是很好理解的。程序员写的类,肯定要放到一个标准包下或者标准包的子包下,packageName指标准包,指当前代码的版本号
这里的groupId和artifactId同部门名称一样,用来唯一确定一个项目(软件,功能)。有些信息会把这两个描述的信息合起来叫坐标。
- 创建项目
- 添加样例源代码-直接基于Spring Boot的单元测试
在src/mian/java目录下放置HelloWorld.java, 在src/test/java目录下放置TestHelloWorld.java
- HelloWorld
package com.example.mavendemo.demo1;
/**
* 这是一个为了研究maven,写的第一个Java代码
* 功能很简单,输出一个HelloWorld的问候
* @author lidengyin
* @version 1.0
*/
public class HelloWorld {
public String say(String name){
return name + "say hello world";
}
}
- TestHelloWorld
package com.example.mavendemo.demo1;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class TestHelloWorld {
private HelloWorld hello;
@Before
public void init(){
System.out.println("init");
hello = new HelloWorld();
}
@Test
public void testSay(){
System.out.println("runnning");
String name="张三";
String exp="张三"+"say hello World";
String act = hello.say(name);
Assert.assertEquals(exp,act);
}
@After
public void destory(){
System.out.println("destory");
hello= null;
}
}
- maven骨架(pom)文件
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example.mavendemo</groupId>
<artifactId>demo-1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo-1</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<!-- <exclusions>-->
<!-- <exclusion>-->
<!-- <groupId>org.junit.vintage</groupId>-->
<!-- <artifactId>junit-vintage-engine</artifactId>-->
<!-- </exclusion>-->
<!-- </exclusions>-->
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
- 编译和测试
- 清空以前安装编译过的历史记录
mvn clean
- 编译源代码
mvn compile
- 运行测试案例进行测试
mvn test
- 将当前代码打成jar包
安装到maven本地管理目录下,其他maven工程只需指定坐标即可使用 其中,[INFO]
installing…指定了当前Maven本地构建保存的目录
[INFO] Installing /home/lidengyin/Downloads/code/demo-1/target/demo-1-0.0.1-SNAPSHOT.jar to /home/lidengyin/.m2/repository/com/example/mavendemo/demo-1/0.0.1-SNAPSHOT/demo-1-0.0.1-SNAPSHOT.jar
[INFO] Installing /home/lidengyin/Downloads/code/demo-1/pom.xml to /home/lidengyin/.m2/repository/com/example/mavendemo/demo-1/0.0.1-SNAPSHOT/demo-1-0.0.1-SNAPSHOT.pom
到目前为止,编码的操作就完成了,包括工程的创建,源代码的编写,单元测试代码的编写,代码的编译,测试案例的运行,以及最后的打包
- 生成站点和报告文档
前面已经完成了一个项目的基本管理过程,接下来介绍生成的相关文档。
- 生成站点信息
mvn site
自动生成站点信息目录: target/site/index.html
成功信息
[INFO] Generating "Plugins" report --- maven-project-info-reports-plugin:3.0.0:plugins
[INFO] Generating "Source Code Management" report --- maven-project-info-reports-plugin:3.0.0:scm
[INFO] Generating "Summary" report --- maven-project-info-reports-plugin:3.0.0:summary
[INFO] Generating "Team" report --- maven-project-info-reports-plugin:3.0.0:team
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 17:04 min
[INFO] Finished at: 2020-03-30T12:02:30+08:00
[INFO] ------------------------------------------------------------------------
lidengyin@ldy:~/Downloads/code/demo-1$
成功界面
- 生成APi DOC文档
mvn javadoc:javadoc
API DOC文档目录
target/site/apidocs/index.html
结果
基于IDEA的Maven插件
- 基于IDEA完成所有工作
之前用的是mvn命令, 后面指定插件的坐标(没有自定, mvn自动找仓库中最新的)告诉mvn做什么事情。在IDEA环境下, 我们是通过什么方式告知mvn做哪些事情呢?
靠的是pom.xml骨架文件。要做的就是在pom.xml中,按照他的语法要求指定相关的插件坐标,maven运行时,自动调用插件,完成对应的任务。
这里先了解一下,常用的插件有哪些, 以及怎样确定他们的坐标。这样才好在pom。xml中描述,如图
在IDEA中使用spring-boot-maven-plugin
进行了统一的集成