В настраиваемом плагине установите свойство visible для кросс-подмодуля - PullRequest
0 голосов
/ 11 июля 2020

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 может также иметь собственное исполнение настраиваемого плагина, который повторно выполняет работу по вычислению свойств. Возможно, плагин мог каким-то образом запоминать значения с первого раза ... может быть, сохраняя их как свойства в родительском элементе. Меньше суеты, какой подход рекомендуется здесь для удовлетворения требований?

...