文章目录
- Maven插件篇
- 引入
- clean 插件
- compile 插件
- test 插件
- package 插件
- install 插件
- 小结:
学习中产生的痛苦来源于知识的浅薄。
Maven插件篇
引入
maven 是一个项目管理的工具,管理项目到底管理什么东西呢?首先肯定是jar包的管理,maven可以导入依赖。其次就是项目的生命周期的管理,不要被生命周期所吓到,其实不就是编译,测试,打包等。这些东西都是maven通过对应的插件来管理的。我们今天就来了解一下这些插件怎么使用。先学习简单的 clean,compile,test,package,install。
为了方便演示,我们使用IDEA创建一个maven项目,不会的话,请使用搜索引擎查询。搜索引擎是最好的老师。
创建好的目录:
创建HelloWorld类 (HelloWorld是我们学习的第一步)
package cn.zl;
public class HelloWorld {
// sayHello方法
public String sayHello(){
return "Hello Maven";
}
//程序主方法
public static void main(String[] args) {
System.out.println(new HelloWorld().sayHello());
}
}
clean 插件
clean,顾名思义清除。清除什么东西呢?清理target目录下的内容,target就是项目编译后的class文件输入文件夹。
命令行指令:mvn clean
clean插件清除前
因为我编译过了,所以目录中有了target文件夹。
项目所在的文件夹也存在 target目录。
- 在命令行执行 mvn clean
找到项目所在的目录,打开cmd命令行输出 mvn clean。
此时查看项目目录,发现target没有了。说明起作用了。 - 在idea中执行 mvn clean
在右边有Maven按钮,点开,然后按照下图点击 clean。
控制台输出
查看目录,发现target目录没有了。
**小结:**为什么会存在这样的功能,你可以想象一下,项目在运行的时候首先都是编译,在下次运行的时候,如果不清楚原来编译的class,文件名不就存在冲突了。两个字周到。我理解的就是这个原因,不服来辩。
compile 插件
compile,中文翻译:编译。这是一个很重要的词语,死记!对于java来说,编译就是将java 文件转成成 class文件。我们在最初学习java的时候编译工具,还记得不?javac(JDK自带的工具,其实JDK还有很多工具,我们通常都忽略了)。我一直觉得compile和javac有千丝万缕的关系,但是目前知识浅薄,还没有醒悟。好了,不哔哔看操作。
我们已经说明了在maven项目中,编译完的class文件是存放在target目录下的。其实,你在IDEA中启动Main方法,也是先进行编译,在执行。
编译前
- 在命令行执行 mvn compile
查看 - 在idea中执行 mvn compile
对哦,提醒一句,在IDEA中,命令执行默认是有循序的,比如compile,默认先执行clean。当然也可以选择跳过。(想知道怎么跳过,自己百度噻)
查看
test 插件
这个还用翻译吗?测试,测试,测试。首先了解一下什么是单元测试(Junit),这里就不多哔哔了。女朋友等我睡觉呢。
- 导入单元测试的依赖。在pom.xml中导入(pom.xml 是maven的灵魂)
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
<!--scope表示测试的范围,不在测试的目录,是无法import这个包的
不信,可以试一试!-->
<scope>test</scope>
</dependency>
</dependencies>
- 在maven的测试目录中编写测试方法。
package cn.zl;
import org.junit.Assert;
import org.junit.Test;
public class ZTests {
@Test
public void test1(){
HelloWorld helloWorld = new HelloWorld();
String sayHello = helloWorld.sayHello();
//这里回去比对 sayHello 和 "Hello Maven"。
Assert.assertEquals("Hello Maven",sayHello);
}
}
- 命令行执行 mvn test
这里其实 测试已经执行了,但是没有打印测试报告,其实我们还需要的配置一些 test插件的参数。
配置插件参数
注意:这里好像存在版本的问题。关于这个插件的详细信息后续讲,先体验。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
</plugin>
</plugins>
</build>
在运行一下
4.此时我们在IDEA中运行一下。
package 插件
package,中文翻译打包,实际就是打包。什么是打包呢,其实就是把一堆class文件压缩成一个jar文件。当然jar 也可以分为:依赖jar 和 可运行jar。什么是依赖jar呢,首先要明确一个思想:组件,也就是编译一些组件,供其他程序要使用,也就是所谓的API。可运行jar,是可以双击图标运行的程序。其实就是指定好Main方法。(Main方法是程序执行的入口)
1.命令行执行 mvn package
效果展示
2. IDEA运行
控制台信息
效果展示
补充:我们可以打包一个可执行jar,玩玩。
鉴于我上面写了一个HelloWorld类,里面包含主方法,我们就那这个来打包。这里我们需要借助 maven-shade-plguin 插件。
第一步:导入插件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>cn.zl.HelloWorld</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
先体验,这个时候会出现两个jar包。
上面是原始的jar包,也就是不包含Main方法的jar包,无法执行的那种。
下面是可以先的jar包。我们可以jar包中的META-INF/MANIFEST.MF 中看到它包含以下信息:
运行一把
成功完美。是不是很好玩。
install 插件
install,中文翻译安装。那到底安装到哪里呢?maven 在本地是有自己的仓库。于是乎,就是把我们的项目安装到本地的仓库。这个时候,在本地编写其他项目的时候,就可以通过groupId 和artifactId 来导入这个依赖jar。
首先我们去仓库看一下
你们的仓库地址,在全局的setting.xml 文件中有。自己百度看下呗。
- 命令行执行mvn install
查看仓库
可以不是我偷偷创建的啊。 - 在IDEA中运行。
控制台信息
查看仓库
存在了。
小结:
细心的同学,在学习的过程中,会产生各种各样的疑惑。好事,绝对的好事。正是因为我的好奇心,才会激励我们对技术学习的渴望。先跑起来,后续我们一起来学习更加详细的知识。大神无非就是懂得多,想得多,了解的多,实际行动多。