6.1 插件介绍
标准生命周期可以通过使用 Maven 插件的功能得到增强。插件允许您将新步骤插入标准循环(例如,分发到应用程序服务器)或扩展现有步骤。
Maven中的插件并不是什么了不起的东西,相反,它是最常见、最常遇到的东西。毕竟,如果你想设置一些构建项目的细微差别,那么你需要在 pom.xml 中指定必要的信息。而做到这一点的唯一方法就是编写一个“插件”。
由于插件与依赖项一样都是工件,因此它们的描述方式大致相同。而不是依赖项部分 - 插件,而不是依赖项 - 插件,而不是存储库 - pluginRepositories,存储库 - pluginRepository。
例子:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>2.6</version>
</plugin>
</plugins>
在 pom.xml 中声明插件允许您修复插件版本,并为其设置必要的参数,定义各种配置参数并绑定到阶段。
换句话说,Maven 运行某些插件来完成所有工作。也就是说,如果我们想教 Maven 关于项目的特殊构建,那么我们需要向 pom.xml 添加一个指示,以在所需的阶段和所需的参数中启动所需的插件。
可用的插件数量非常多,有各种插件可以让你直接从 maven 运行一个 web 应用程序,在浏览器中测试它,生成资源等等。在这种情况下,开发人员的主要任务是找到并应用最合适的插件集。
6.2 生命周期和插件
通常,插件用于在特定阶段的执行期间启动某种控制台实用程序。此外,我们甚至可以运行一个常规的 Java 类(当然,它有一个 main 方法)。
例子:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>com.example.Main</mainClass>
<arguments>
<argument>first-argument</argument>
<argument>second-argument</argument>
</arguments>
</configuration>
</plugin>
通常插件可以非常灵活地配置。Maven 开发人员的所有官方插件都在官方 Maven 网站上有详细的记录。例如,对于Apache Maven 项目页面上的maven-compiler-plugin,您可以看到控制该插件的所有变量的列表。有关插件的信息可在链接中找到
更重要的信息。Maven 在其生命周期的不同阶段调用不同的插件。例如,一个描述 swing Java 桌面应用程序的项目与典型的 Web 应用程序(战争)开发具有不同的生命周期阶段。
或者,例如,当执行“mvn test”命令时,启动了项目生命周期中的一整套步骤:“process-resources”、“compile”、“process-classes”、“process-test-resources” ”,“测试编译”,测试。您可以在 Maven 显示的消息中看到对这些阶段的提及:
[INFO] Scanning for projects...
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ codegym ---
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ codegym
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ codegym ---
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ codegym ---
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ codegym ---
[INFO] Surefire report directory: t:\ projects\codegym\target\surefire-reports
6.3 Maven 中的目标 - 目标
在Maven中,还有目标(goal)这样的东西。目标有点像 Maven 启动目标。主要目标与主要阶段一致:
- 证实;
- 编译;
- 测试;
- 包裹;
- 核实;
- 安装;
- 部署。
在项目生命周期的每个阶段,都会调用一个特定的插件(jar-library),其中包含了一些目标(goal)
例如,“maven-compiler-plugin”插件包含两个目标:compiler:compile 用于编译项目的主要源代码,compiler:testCompile 用于编译测试。形式上,可以更改阶段列表,尽管很少需要这样做。
如果你需要在某个阶段执行一些非标准的动作,那么你只需要在pom.xml中添加合适的插件即可
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>Name-plugin</artifactId>
<executions>
<execution>
<id>customTask</id>
<phase>generate-sources</phase>
<goals>
<goal>pluginGoal</goal>
</goals>
</execution>
</executions>
</plugin>
在这种情况下最重要的是为插件定义“执行/阶段”阶段的名称,您需要在其中嵌入对插件“目标”目标的调用。比如你需要根据xml生成Java代码。然后您需要“生成源代码”阶段,它位于调用编译阶段之前,非常适合生成项目的部分源代码。
GO TO FULL VERSION