从自定义插件中,设置跨子模块可见属性

时间:2020-07-11 16:47:26

标签: maven maven-3 maven-plugin

ParentModule构建SubModCustomPluginSubModASubModB。它通常都是一起构建的;并没有真正建立SubModASubModB的真正呼声。

SubModA构建使用自定义插件,该插件设置在构建SubModA中内插的一些项目属性。

SubModB还需要插值SubModA中的自定义插件计算出的某些属性。

如果该插件仅在SubModA自己的MavenProject中设置属性,那将不仅仅有效。 SubModB看不到它们。

如果插件在父MavenProjectMavenSession.getUserProperties()中设置属性,这似乎也不起作用,尽管也许我错过了一些关键步骤。我假设SubModB在构建SubModA之前已经对其属性进行了初始化,因此看不到对父级或会话属性的进一步更改。

作为演示,如果自定义插件在父级中向上导航,在MavenProject上为SubModB查找SubModB并在那里设置属性,则可以使用,但是就我的口味而言,任何插件都不应做任何事情那乱伦。

我会稍稍反对让SubModASubModA处获取属性,虽然有点乱伦,但它与普通英语“我需要用{{ 1}},所以我正在寻找那里。” (在较早的实现中,SubModA会将其属性写入其构建目录中的属性文件中,而SubModB则在查找该文件系统路径以加载属性文件,因此这大致等效。但是我宁愿不要对临时文件的同级子模块在任一方向上互相戳戳。)

我可以接受SubModA中的自定义插件在其父级上设置属性,然后让SubModB在执行时从其父级中获取一些属性。这似乎比需要彼此了解的兄弟姐妹还干净。

我想SubModB也可以对定制插件执行自己的操作,这将重新执行计算属性的工作。也许插件可以以某种方式从第一时间记住这些值……也许可以通过将它们作为属性存储在父级中。

由于Maven被设计为“经过优化”并具有某些需要最少麻烦的方式,为满足此处的要求,推荐的方法是什么?

0 个答案:

没有答案