首页 >Java >java教程 >Maven Notes(1)

Maven Notes(1)

Linda Hamilton
Linda Hamilton原创
2025-01-28 04:13:09242浏览

Maven notes (1)

Maven 生命周期及插件配置

Maven 使用标准的生命周期模型,包含 defaultcleansite 三个生命周期。 每个生命周期包含一系列有序的阶段 (Phase)。

阶段 (Phase)

执行 Maven 命令时,例如 mvn compile,Maven 会依次执行从 validatecompile 阶段的所有命令。 完整的阶段列表可参考 Maven 文档。

目标 (Goal)

Maven 插件的目标 (Goal) 定义了具体的执行任务,并绑定到特定的阶段。例如,maven-compiler-plugin 插件的 compile 目标绑定到 compile 阶段。 同一阶段中,插件目标的执行顺序由 pom.xml 文件中 <plugins> 部分的条目顺序决定。

要查看绑定到特定阶段 (例如 package 阶段) 的插件目标,可以使用以下命令:

<code class="language-bash">mvn help:describe -Dcmd=package</code>

查看插件目标和阶段 (源码)

要了解插件目标和阶段的绑定关系,可以查看插件的源代码。 例如,frontend-maven-plugin 插件的 install-node-and-npmnpm 目标的配置如下:

<code class="language-xml"><plugin>
  <groupId>com.github.eirslett</groupId>
  <artifactId>frontend-maven-plugin</artifactId>
  <version>1.15.1</version>
  <executions>
    <execution>
      <id>install-node-and-npm</id>
      <goals>
        <goal>install-node-and-npm</goal>
      </goals>
    </execution>
    <execution>
      <id>npm install</id>
      <goals>
        <goal>npm</goal>
      </goals>
    </execution>
    ...
  </executions>
</plugin></code>

对应的 Java 代码片段:

<code class="language-java">@Mojo(name="install-node-and-npm", defaultPhase = LifecyclePhase.GENERATE_RESOURCES, threadSafe = true)
public final class InstallNodeAndNpmMojo extends AbstractFrontendMojo {
  // ...
}

@Mojo(name="npm",  defaultPhase = LifecyclePhase.GENERATE_RESOURCES, threadSafe = true)
public final class NpmMojo extends AbstractFrontendMojo {
  // ...
}</code>

可以看到,这两个目标都绑定到 GENERATE_RESOURCES 阶段。

Profile (配置文件)

Profile 用于:

  • 添加或覆盖属性
  • 添加依赖项
  • 添加插件依赖项
  • 添加插件管理依赖项

设置默认 Profile

可以通过在 pom.xml 中配置 activeByDefault 属性来设置默认的 Profile:

<code class="language-xml"><profiles>
  <profile>
    <activation>
      <property>
        <name>debug</name>
      </property>
    </activation>
    ...
  </profile>
  <profile>
    <id>dev</id>
    <activation>
      <activeByDefault>true</activeByDefault>
    </activation>
    ...
  </profile>
</profiles></code>

覆盖已启用的 Profile

假设 dev Profile 默认启用,要启用 production Profile 并禁用 dev Profile,可以使用以下命令:

<code class="language-bash">mvn -P=-dev,production</code>

以上是Maven Notes(1)的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn