ParentModule
строит SubModCustomPlugin
, SubModA
и SubModB
. Обычно все строится вместе; нет реального вызова для сборки только SubModA
или просто SubModB
.
SubModA
build использует настраиваемый плагин, который устанавливает некоторые свойства проекта, которые интерполируются в сборке SubModA
.
SubModB
также необходимо интерполировать некоторые свойства, которые были вычислены пользовательским плагином в SubModA
.
Это не просто работает, если этот плагин устанавливает свойства только в собственном SubModA
MavenProject
. SubModB
их не видит.
Также кажется, что не работает, если плагин устанавливает свойства в родительском MavenProject
или в MavenSession.getUserProperties()
, хотя, возможно, мне не хватает какого-то ключевого шага. Я предполагаю, что свойства SubModB
были инициализированы еще до создания SubModA
, поэтому дальнейшие изменения родительских свойств или свойств сеанса не видны.
В качестве демонстрации он работает, если настраиваемый плагин перемещается вверх через родителя, ищет MavenProject
вместо SubModB
и устанавливает там свойства, но, на мой вкус, ни один плагин не должен делать что-то кровосмесительное.
Я бы немного меньше возражал против наличия SubModB
go возьмите свойство из SubModA
- тоже немного инцестуозно, но похоже на простой английский sh «Мне нужно это свойство, которое было вычислено в SubModA
, поэтому я ищу его, чтобы получить». (В более ранней реализации SubModA
записывал свои свойства в файл свойств в своем каталоге сборки, а SubModB
искал этот путь файловой системы для загрузки файла свойств, так что это примерно эквивалентно. Но я бы предпочел не возня с временными файлами или , когда родственные подмодули торчат друг в друга в любом направлении.) имея SubModB
, извлекает некоторые свойства от своего родителя во время выполнения. Это кажется чище, чем братьям и сестрам, которым нужно знать друг о друге.
Я полагаю, что SubModB
может также иметь собственное исполнение настраиваемого плагина, который повторно выполняет работу по вычислению свойств. Возможно, плагин мог каким-то образом запоминать значения с первого раза ... может быть, сохраняя их как свойства в родительском элементе. Меньше суеты, какой подход рекомендуется здесь для удовлетворения требований?