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 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
俊昭喜喜里1 天前
java中的继承和多态的区别
java
小羊没烦恼!1 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
譕痕1 天前
JSONObject与JSONArray封装数据格式区别
java·json
胡写代码1 天前
别再前后端各写一套表单校验了
java·后端
小鱼能吃糖1 天前
缺陷修复总览 · mall电商项目:5类缺陷,1个病根,4个业务域
java·电商
此时不提桶,更待何时1 天前
01-06-A-JVM排查实战详解
java·jvm
vipxieliang1 天前
ValidX 在 DDD 领域驱动设计中的实践
java·spring boot
ba_pi1 天前
mysql 查询所有表名并授权
java
ProcessOn官方账号1 天前
java函数式编程--入门基础
java·编程·函数式编程