Pet*_*der 5 java maven-plugin maven
我编写了一个自定义 Maven 插件,可以从自定义模式构建 Java 代码。
项目结构是这样的:
Project
+ plugin
+ web-application
Run Code Online (Sandbox Code Playgroud)
反应器首先编译插件,然后编译应用程序。
通常的 mvn 命令是:
mvn
Run Code Online (Sandbox Code Playgroud)
...谁触发了<defaultGoal>plugin:scaffold package</defaultGoal>
在新机器上,构建失败,因为在 Reactor 计划构建阶段时插件尚不可知。所以我得mvn install先打电话。然后mvn plugin:scaffold package就像魅力一样发挥作用。
问题是:每当我修改脚手架插件并调用mvn plugin:scaffold package脚手架插件的修改时,尚未使用它,因为它尚未安装到存储库中。所以我得mvn install先再打电话。
有没有办法:
一步到位?
首先,您的插件必须是根项目的模块,分辨率才能正常工作:
<modules>
<module>plugin</module>
<module>app</module>
</modules>
Run Code Online (Sandbox Code Playgroud)
build/plugins然后在您的应用程序 pom 部分中声明插件
<build>
<plugins>
<plugin>
<groupId>org.example.plugin</groupId>
<artifactId>plugin</artifactId>
<version>${project.parent.version}</version>
<executions>
<execution>
<id>sayhi</id>
<phase>generate-sources</phase>
<goals>
<goal>sayhi</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)
第一次运行插件或当插件更改时,您至少需要运行该package阶段,以便创建插件 jar。它必须从根项目运行:
mvn package
Run Code Online (Sandbox Code Playgroud)
该插件将在以下阶段执行generate-sources:
[INFO] --- plugin:1.0-SNAPSHOT:sayhi (sayhi) @ app ---
[INFO] Hello, world.
[INFO]
Run Code Online (Sandbox Code Playgroud)
当您更改插件时,只需运行(再次从根项目):
mvn package
Run Code Online (Sandbox Code Playgroud)
你会看到变化:
[INFO] --- plugin:1.0-SNAPSHOT:sayhi (sayhi) @ app ---
[INFO] Hello, worldxxxx.
[INFO]
Run Code Online (Sandbox Code Playgroud)
在Github上查看完整示例
| 归档时间: |
|
| 查看次数: |
1204 次 |
| 最近记录: |