Maven插件

什么是Maven插件?

Maven实际上是一个插件执行框架,Maven中的所有任务都是由插件完成的。

Maven插件是构建目标的集合,也称为MOJO (Maven Old Java Object)。可以把插件理解为一个类,而构建目标是类中的方法。构建阶段包含一系列的构建目标,可以理解为按顺序调用各个插件中的构建目标(方法),然后一系列的构建阶段组成一个构建生命周期。

构建目标可以绑定到多个构建阶段,也可以不绑定,就像类的方法可以被调用,也可以不被调用。

插件示例:

<build>
    <plugins>
        <plugin>
            <artifactId>maven-failsafe-plugin</artifactId>
            <version>${maven.failsafe.version}</version>
            <executions>
                <execution>
                    <goals>
                        <goal>integration-test</goal>
                        <goal>verify</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

这是一个故障安全插件的简单配置,负责运行集成测试。可以看到,插件有两个主要目标:

  • integration-test: 运行集成测试
  • verify: 验证所有通过的集成测试

我们可以使用下面的命令列出一个特定插件的所有目标:

mvn <PLUGIN>:help

例如,要列出故障安全插件中的所有目标:

mvn failsafe:help

输出:


...

Maven Failsafe MOJO in maven-failsafe-plugin.

This plugin has 3 goals:

failsafe:help
  Display help information on maven-failsafe-plugin.
  Call mvn failsafe:help -Ddetail=true -Dgoal=<goal-name> to display parameter
  details.

failsafe:integration-test
  Run integration tests using Surefire.

failsafe:verify
  Verify integration tests ran using Surefire.
...

可以看到插件包含3个目标。

要执行一个特定的构建目标,不执行它的整个阶段(和前面的阶段),可以使用以下命令:

mvn [plugin-name]:[goal-name]

例如,可以使用maven-compiler-plugin的编译目标来编译Java项目,运行以下命令:

mvn compiler:compile

插件类型

Maven 提供了下面两种类型的插件:

类型描述
Build plugins在构建时执行,并在 pom.xml 的 元素中配置。
Reporting plugins在网站生成过程中执行,并在 pom.xml 的 元素中配置。

下面是一些常用插件的列表:

插件描述
clean构建之后清理目标文件。删除目标目录。
compiler编译 Java 源文件。
surefile运行 JUnit 单元测试。创建测试报告。
jar从当前工程中构建 JAR 文件。
war从当前工程中构建 WAR 文件。
javadoc为工程生成 Javadoc。
antrun从构建过程的任意一个阶段中运行一个 ant 任务的集合。

自定义插件

如果maven内置插件不能满足项目需求,也可以开发自定义插件。

https://maven.apache.org/guides/plugin/guide-java-plugin-development.html

maven——添加插件和添加依赖有什么区别?

依赖:运行时开发时都需要用到的jar包,比如项目中需要一个Json的jar包,就要添加一个依赖,这个依赖在项目运行时也需要,因此在项目打包时需要把这些依赖也打包进项目里;

插件:在项目开的发时需要,但是在项目运行时不需要,因此在项目开发完成后不需要把插件打包进项目中,比如有个可以自动生成getter和setter的插件,嗯对~这就是插件了,因为这玩意在编译时生成getter和setter,编译结束后就没用了,所以项目打包时并不需要把插件放进去~

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值