1.maven-jar-plugin 用于创建标准的JAR文件
这个plugin是 maven-jar-plugin,它是Maven的核心插件之一,主要用于创建标准的JAR文件。
具体来说,它的主要功能包括:
打包项目:将编译后的class文件打包成标准的JAR文件
配置清单文件:在JAR的META-INF/MANIFEST.MF中设置Main-Class属性
指定主类:通过<mainClass>配置指定可执行JAR的入口类
控制JAR内容:可以配置哪些文件包含在JAR中
在你的项目中,这个插件配置为版本3.0.2,它会:
将你的项目代码打包成rsyntaxtextarea-clangd-1.0.0-SNAPSHOT.jar
设置`com.example.demo.DemoApp`作为主类,使JAR可以直接运行
在运行`mvn package`命令时自动执行
这个插件创建的是普通的JAR文件(不包含依赖),与maven-assembly-plugin创建的fat JAR不同。
注意:由于这个JAR不包含依赖,运行时需要确保所有依赖在classpath中可用。
如果要运行这个jar,则需要先复制依赖,然后指定依赖在classpath中
bash
# 先复制依赖到target/dependency目录
mvn dependency:copy-dependencies
# 然后运行
java -cp "target/rsyntaxtextarea-clangd-1.0.0-SNAPSHOT.jar;target/dependency/*" com.example.demo.DemoApp
xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<archive>
<manifest>
<mainClass>com.example.demo.DemoApp</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
2.maven-assembly-plugin 用于打包项目为可执行JAR文件
这个plugin是 maven-assembly-plugin,它是Maven的核心插件之一,主要用于打包项目为可执行JAR文件。
具体来说,它的主要功能包括:
创建fat JAR:将项目代码和所有依赖合并到一个单独的JAR文件中
配置清单文件:设置JAR的Main-Class属性,使JAR可以直接运行
使用预定义描述符:通过<descriptorRef>jar-with-dependencies</descriptorRef>使用内置的fat JAR描述符
绑定到构建阶段:在package阶段自动执行打包
在你的项目中,这个插件配置为版本3.6.0,它会:
将你的项目代码和所有依赖打包成一个单独的可执行JAR
设置`com.example.demo.DemoApp`作为主类
在运行`mvn package`命令时自动执行,
你可以使用以下命令生成fat JAR。生成的JAR文件将包含所有依赖,可以直接运行:
这个插件对于创建独立可运行的Java应用程序非常有用。
xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<archive>
<manifest>
<mainClass>com.example.demo.DemoApp</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
3.maven-surefire-plugin 用于运行单元测试
这个plugin是 maven-surefire-plugin,它是Maven的核心插件之一,主要用于运行单元测试。
具体来说,它的主要功能包括:
执行测试:运行项目中使用JUnit、TestNG等测试框架编写的单元测试
生成报告:在测试执行后生成详细的测试报告(HTML格式)
测试生命周期管理:在Maven的test阶段自动执行测试
测试结果处理:统计测试通过/失败数量,决定构建是否成功
在你的项目中,这个插件配置为版本3.2.5,它会:
运行java目录下的所有测试类
生成测试报告到surefire-reports目录
如果测试失败,会导致Maven构建失败
当你运行mvn test命令时,这个插件就会被触发执行所有测试用例。
如果要跳过测试,
可在这个plugin中添加一个configuration,<configuration><skipTests>true</skipTests></configuration>。
或者运行mvn package命令时添加参数mvn package -DskipTests=true
xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.2.5</version>
</plugin>
4.exec-maven-plugin 用于直接运行Java类
这个plugin是 exec-maven-plugin,它是Maven的第三方插件,主要用于直接运行Java类。
具体来说,它的主要功能包括:
运行Java类:直接执行指定的Java类(不需要先打包成JAR)
配置主类:通过<mainClass>配置指定要运行的类
传递参数:可以向运行的类传递命令行参数
环境配置:可以配置Java系统属性、环境变量等
在你的项目中,这个插件配置为版本3.2.0,并且指定了主类为com.example.demo.DemoApp。这意味着你可以使用以下Maven命令直接运行你的demo应用程序:
这个命令会:
编译项目
运行指定的DemoApp类
不需要先打包成JAR文件
这对于快速测试和运行项目非常有用,特别是在开发阶段。
运行方法 mvn exec:java
xml
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<mainClass>com.example.demo.DemoApp</mainClass>
</configuration>
</plugin>
5.maven-dependency-plugin 用于管理项目依赖
这个plugin是 maven-dependency-plugin,它是Maven的核心插件之一,主要用于管理项目依赖。
具体来说,它的主要功能包括:
依赖分析:分析项目的依赖关系树
依赖列表:列出项目的所有依赖及其版本
依赖复制:将依赖复制到指定目录
依赖解包:解压依赖的JAR文件
依赖排序:分析依赖冲突和解决策略
在你的项目中,这个插件配置为版本3.6.1,它提供了多种目标(goals)来处理项目的依赖关系,比如:
mvn dependency:tree - 显示依赖树
mvn dependency:list - 列出所有依赖
mvn dependency:copy - 复制依赖到目标目录
mvn dependency:copy-dependencies - 复制依赖到target/dependency目录
mvn dependency:unpack - 解压依赖
mvn dependency:resolve - 确保所有依赖都已正确下载
这个插件对于管理复杂项目的依赖关系非常有用,可以帮助开发者了解项目的依赖结构、解决依赖冲突等问题。
xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.6.1</version>
</plugin>