maven核心插件介绍

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>
相关推荐
lhldsg40 分钟前
智慧场馆解决方案小程序开发实战:从架构设计到部署指南
java·小程序·uni-app
Freak嵌入式1 小时前
Pico UART 数据收发实战:硬件配置、MicroPython 编程
java·开发语言·单片机·嵌入式硬件·生活
devilnumber2 小时前
Oracle 与 MySQL substr 函数差异总结
java·数据库·mysql·oracle
cfm_29142 小时前
线程池阻塞队列
java·开发语言
坐吃山猪2 小时前
【多线程】ThreadPool线程池参数说明
java·网络
evans在进步3 小时前
Java 常用设计模式(二):装饰器、适配器、责任链、模板方法、策略与观察者
java·开发语言·设计模式
jvmind_dev3 小时前
频繁 new JedisCluster 之后,对象池为什么回不去了?
java·后端
AKA__Zas3 小时前
文件 I/O(速通版
java·intellij-idea·学习方法
学长毕业设计3 小时前
基于SpringBoot的咖啡馆管理系统的设计与实现(源码+文档+讲解视频)
java·spring boot·后端
骇客野人3 小时前
SpringBoot业财一体化系统设计和落地实施方案
java·spring boot·后端