ParentModule
构建SubModCustomPlugin
,SubModA
和SubModB
。它通常都是一起构建的;并没有真正建立SubModA
或SubModB
的真正呼声。
SubModA
构建使用自定义插件,该插件设置在构建SubModA
中内插的一些项目属性。
SubModB
还需要插值SubModA
中的自定义插件计算出的某些属性。
如果该插件仅在SubModA
自己的MavenProject
中设置属性,那将不仅仅有效。 SubModB
看不到它们。
如果插件在父MavenProject
或MavenSession.getUserProperties()
中设置属性,这似乎也不起作用,尽管也许我错过了一些关键步骤。我假设SubModB
在构建SubModA
之前已经对其属性进行了初始化,因此看不到对父级或会话属性的进一步更改。
作为演示,如果自定义插件在父级中向上导航,在MavenProject
上为SubModB
查找SubModB
并在那里设置属性,则可以使用,但是就我的口味而言,任何插件都不应做任何事情那乱伦。
我会稍稍反对让SubModA
从SubModA
处获取属性,虽然有点乱伦,但它与普通英语“我需要用{{ 1}},所以我正在寻找那里。” (在较早的实现中,SubModA
会将其属性写入其构建目录中的属性文件中,而SubModB
则在查找该文件系统路径以加载属性文件,因此这大致等效。但是我宁愿不要对临时文件或的同级子模块在任一方向上互相戳戳。)
我可以接受SubModA
中的自定义插件在其父级上设置属性,然后让SubModB
在执行时从其父级中获取一些属性。这似乎比需要彼此了解的兄弟姐妹还干净。
我想SubModB
也可以对定制插件执行自己的操作,这将重新执行计算属性的工作。也许插件可以以某种方式从第一时间记住这些值……也许可以通过将它们作为属性存储在父级中。
由于Maven被设计为“经过优化”并具有某些需要最少麻烦的方式,为满足此处的要求,推荐的方法是什么?