2012-01-05 2 views
2

Я хочу работать над плагином Maven и как часть его конфигурации (которая будет отображаться в поля mojo), я бы хотел предоставить XML-атрибуты для нескольких тегов. К сожалению, official guide не упоминает об использовании атрибутов в блоках конфигурации (которые могут или не может означать, что это просто не возможно.)Можно ли использовать атрибуты XML в блоке конфигурации плагина Maven?

Что я хотел бы иметь это:

<plugin> 
    <configuration> 
    <my_option attr="x" /> <!-- is this possible? --> 
    </configuration> 
</plugin> 

Это вообще возможно? Если да, то как это будет отображаться в поле в моем mojo?

ответ

2

Nope. Maven не поддерживает атрибуты. Однако вы можете использовать карту строк или около того. Посмотрите, например, как плагин компилятора делает compilerArguments или как плагин Android Maven (на котором вы работаете) выполняет jvmArguments в конфигурации dex mojo.

+0

Thanks Manfred; Я закончил создание POJO, который содержит конфигурацию. Я бы предпочел, чтобы он был похож на синтаксис, используемый для определения тех же параметров в манифесте, но, насколько я могу судить, это невозможно с любым из этих подходов. – Matthias

0

Я знаю, что опаздываю на этот вопрос, но я думаю, что ответ другой. В конце концов, Maven antrun plugin работает именно так, как захотел OP; посмотрите, как target может предоставить любой XML, который вы можете использовать в файле сборки ant.

Это сделано в mojo, объявив этот параметр с типом PlexusConfiguration, см. around lines 164-171.

PlexusConfiguration не распространяется любой известный XML API, такие как DOM, и это, кажется, не поддерживает пространства имен, ИП и т.д., но у него есть основные методы getChildren/getAttributeNames/getAttribute вы хотите для большинства целей.

Есть ли способ сделать это в способе newer JSR-330 (non-Plexus), я не знаю, но, насколько это касается API-интерфейсов Plexus, в документе говорится: «Эти API будут поддерживаться навсегда или, по крайней мере, до тех пор, пока Maven не будет полностью падает поддержка Maven 2 ".

Смежные вопросы