我想链接两个应该按顺序执行的Maven插件。第一个插件的输出应用作第二个插件的输入。让我解释一下:
generator-plugin
。这给出了:
information-plugin-file ---\
|--- generator-plugin
information-plugin-sql ---/
如何使用Maven做到这一点?您可以链接插件吗?我熟悉基本的Mojo的编写,但是我不知道该如何解决这个问题。
一种可能性是输出到information-plugin-file
/ information-plugin-sql
中的标准化文件,并让随后的generator-plugin
插件从同一文件中读取(Unix的工作方式,是一个文件)。
但是我正在寻找更直接,特定于Maven的方法来执行此操作。有这种方法吗?
关于执行顺序,所有插件将在generate-sources
阶段中运行,并在<plugins>
部分中以正确的顺序进行定义。我想这已经涵盖了。
答案 0 :(得分:1)
AFAIK,maven中的插件设计为完全独立的,因此可以使用以下共享信息的方法:
通过Maven属性共享:
可以在第一个插件中设置属性,并且可以从第二个插件中访问
import org.apache.maven.project.MavenProject;
// now inject it into your mojo of the first plugin
@Parameter(defaultValue = "${project}")
private MavenProject project;
// Inside the "execute" method:
project.getProperties().setProperty("mySampleProperty", <SOME_VALUE_GOES_HERE>);
通过文件共享
第一个插件可以在“目标”文件夹中生成一些输出文件 第二个插件可以读取该文件
编写一个执行其他插件(例如第一个和第二个插件)的“包装”插件。毕竟,mojo只是可以从聚合插件中调用的Java代码
您可以找到Here有关此方法的更多信息
答案 1 :(得分:-1)
我相信,在Maven中订购商品的唯一方法是通过lifecycles。您可以让第一个插件(用于输入信息)在generate-sources
阶段运行,而第二个插件在process-sources
阶段运行。