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>
相关推荐
编程令我快乐1 小时前
maven中deploy 的流程
java·maven
jaysee-sjc1 小时前
【JavaWeb】Tlias智能学习辅助系统|后端Web实战(登录认证)
java·开发语言·前端·学习·mybatis
万维易源1 小时前
免费药品信息查询:用API 读懂常用药
java·前端·数据库·药品信息·药品查询·药品查询api
wear工程师2 小时前
Java 类初始化到底何时触发?别把加载、连接和 static 执行混在一起
java·jvm
hard_hot2 小时前
RabbitMQ异步下单架构设计
java·rabbitmq·java-rabbitmq
郑州光合科技余经理2 小时前
餐饮预定系统架构拆解:订单链路、权限组织与私有化源码交付
java·开发语言·前端·数据库·人工智能·系统架构·php
vx-程序开发2 小时前
django汽车租赁系统---附源码25360
java·javascript·spring boot·python·eclipse·django·php
zhougl9962 小时前
Java实现腾讯云开发者社区列表爬虫
java·爬虫·腾讯云
智码看视界2 小时前
Day49-AI微服务化-将大模型能力封装为标准微服务
java·微服务·ai·架构·大模型·sse流式输出·ai中台