Все классы? Что ты имеешь в виду ? Может быть, вы имеете в виду target / classes / ** (который является местом вывода по умолчанию для классов) или, может быть, вы имеете в виду список нескольких расположений дерева каталогов?
Можете ли вы лучше объяснить, чем занимается ваш Mojo и с какой фазой и целями вы хотите связать его?
Я думаю, возможно, вы думаете о том, как неправильно применить цикл сборки Maven к вашему проекту. Не могли бы вы лучше объяснить, что делает ваш плагин, может быть, это работает "упаковка"?
Но если я вас правильно понимаю, вы хотите, чтобы при запуске плагина была добавлена дополнительная запись classpath для target / classes / **? Таким образом, он может загружать код и ресурсы из самого проекта, чтобы изменить динамическое поведение внутри плагина maven?
Стандартный способ сделать это - <dependency>
, но, конечно, для этого требуется фиксированная единица.
Другие плагины, которые допускают такое поведение (например, maven-antrun-plugin), предоставляют механизм для изменения пути к классам внутри Mojo и используют что-то из раздела <configuration>
их pom.xml, чтобы сделать это. Не ясно, является ли используемый вами плагин Maven тем, который вы написали?
.
Проверка и упаковка, которая является допустимым вариантом использования. Но я спрашиваю, почему на «classpath»? Я предполагаю, что вы привязаны к фазе классов процессов.
т.е. classpath предназначен для предоставления кода / ресурсов среде выполнения для выполнения. Но в вашем случае у вас есть входной каталог, а не требование пути к классу.
В Mojo можно настроить сканер каталогов на входной каталог * / .class, а затем можно (используя некоторую библиотеку) открыть каждый файл и проверить аннотацию, не загружая ее.
Это также хороший вид разделения между ненадежными входными данными и последовательным поведением самого кода плагина. Что произойдет, если проект решит, что он хочет реализовать тот же пакет и / или класс, который используется в реализации самого плагина.
ОБНОВЛЕНИЕ: Если вы действительно загружаете классы, которые вы регистрируете, в JVM из вашего Mojo, то, по крайней мере, реализуйте свой собственный ClassLoader, чтобы сделать это. Это не обязательно простая проблема для решения. Вы заставляете этот ClassLoader находить вещи, указанные в конфигурации, во входном каталоге.