0Pricing
Java Academy · 课时

Maven 插件与目标

自定义构建过程

Maven 插件与目标 是 CoddyKit 上的免费 Java Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Java Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Java Academy 课程共包含 4 节课。

Maven 插件和目标

Maven 本身几乎不做任何工作——所有实际工作都由插件完成。插件提供目标,而目标会绑定到生命周期阶段。本课将展示插件如何定制构建。

插件与目标

插件是相关功能的打包集合。目标是插件中的一项具体任务。例如,编译器插件提供 compile 和 testCompile 目标。

目标坐标

您可以直接以 plugin:goal 的形式调用目标。例如 mvn compiler:compile 或 mvn surefire:test。通常,目标会自动运行,因为它们已经绑定到阶段。

阶段绑定

默认打包类型会预先将标准插件绑定到各个阶段。对于 jar 项目,编译器插件的 compile 目标会绑定到 compile 阶段,而 Surefire 插件的 test 目标会绑定到 test 阶段——这就是 mvn test 可以直接工作的原因。

配置编译器

您可以在 <build><plugins> 内配置插件。这里我们设置 Java 发布级别,使编译器面向特定版本。

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.13.0</version>
      <configuration>
        <release>21</release>
      </configuration>
    </plugin>
  </plugins>
</build>

Surefire 插件

Surefire 会在 test 阶段运行单元测试。您可以配置要包含的测试、并行执行方式和 JVM 参数。它的同伴插件 Failsafe 会在 verify 阶段运行集成测试。

绑定额外执行

<execution> 块会将目标显式绑定到某个阶段,也可以为其指定独立配置。您可以借此添加额外工作,例如在编译前生成代码。

<plugin>
  <artifactId>maven-antrun-plugin</artifactId>
  <executions>
    <execution>
      <id>print-banner</id>
      <phase>generate-sources</phase>
      <goals><goal>run</goal></goals>
    </execution>
  </executions>
</plugin>

构建胖 JAR

默认的 JAR 不包含依赖。Shade 插件(或 Assembly 插件)会将所有内容打包到一个可运行的超级 JAR中,并将其目标绑定到 package 阶段。

Exec 插件

Exec 插件允许您使用 mvn exec:java 从 Maven 运行应用,并指定主类。无需打包即可快速运行,非常方便。

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>exec-maven-plugin</artifactId>
  <configuration>
    <mainClass>com.example.App</mainClass>
  </configuration>
</plugin>

插件管理

在多模块构建中,父 POM 中的 <pluginManagement> 会固定插件版本和共享配置。子模块随后只需引用插件,无需重复版本,从而保持构建一致。

探索配置

使用 mvn help:describe -Dplugin=compiler 可以列出插件的目标和参数。这是在不离开终端的情况下了解插件所提供配置选项的最快方式。

快速检查

检验您对插件和目标的理解。

回顾

您已经了解 Maven 插件的工作方式:

  • 所有实际的构建工作都由插件完成,插件会提供目标。
  • 目标会绑定到生命周期阶段,因此标准阶段可以直接工作。
  • 在 <build><plugins> 中配置插件;添加执行以实现额外绑定。
  • Shade/Assembly 用于构建胖 JAR;Exec 用于运行应用;Surefire/Failsafe 用于运行测试。
  • mvn help:describe 会显示插件的目标和参数。

常见问题解答

「Maven 插件与目标」课时是免费的吗?

是的 — 「Maven 插件与目标」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Java Academy 课程的其余内容,请升级到 CoddyKit PRO。 Java Academy 课程共包含 4 节课。

「Maven 插件与目标」这节课中我会学到什么?

自定义构建过程 你通过在浏览器中直接运行的动手代码来练习 Java Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Java Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Java Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「Maven 插件与目标」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Java Academy 课中编写并运行代码吗?

能。每节 Java Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. Maven 项目结构
  2. Maven 插件与目标
  3. Gradle 基础
  4. 选择构建工具
← 返回 Java Academy