Создание собственного плагина скаффолда: исключение загрузки ресурсов метавиджета только при запуске в консоли кузницы

По некоторым причинам я пытаюсь пересобрать плагин скаффолд-фейс отдельно, но обнаружил очень досадную ошибку, которую не могу решить.

java.lang.NoSuchMethodException: class org.metawidget.inspector.impl.BaseObjectInspectorConfig.setPropertyStyle(ForgePropertyStyle). Did you mean setPropertyStyle(PropertyStyle)?
    at org.metawidget.config.impl.BaseConfigReader$ConfigHandler.classGetMethod(BaseConfigReader.java:1633)

Попробовав некоторые трюки, просмотрите коды конфигурации метавиджета, не нашли, как решить проблему.

scaffold setup --scaffoldType customfaces

работает нормально, но

scaffold from-entity com.domain.entity.* --scaffoldType customfaces 

терпит неудачу.

У кого-нибудь есть такая же проблема? Я могу что-то напутать?


Обновление №1:

Загрузка ресурсов завершается сбоем только при запуске в консоли Forge. Тест JUnit работает нормально. Я предполагаю, что загрузчик ресурсов плагина метавиджета пытается загрузить метавиджет-*.xml не из нового плагина, а из исходного контекста scaffold-api.

Обновление №2:

Проблема где-то глубоко в метавиджете и кузнечном отношении. Я обнаружил, что если я использую непосредственно SimpleResourceResolver.openResource(), результат действителен. Но если я добавлю StaticHtmlWidget.setConfig(), результат будет Unable to locate com/domain/customfaces/metawidget-entity.xml on CLASSPATH при первом вызове write(). Я понятия не имею, как разрешить это поведение.


person azendh    schedule 27.09.2012    source источник
comment
Проблема более интересна, как я уже упоминал ранее, тест JUnit, который я пишу, работает правильно. getShell().execute(scaffold from-entity com.domain.entity.* --scaffoldType customfaces --overwrite --targetDir /); Это может быть проблема, связанная с консолью подделки?   -  person azendh    schedule 27.09.2012


Ответы (1)


Возможно, вы включаете JAR-файлы Metawidget более одного раза? Forge использует модули JBoss, поэтому вы должны быть осторожны при построении пути к классам.

Ошибка Metawidget в основном говорит о том, что «ForgePropertyStyle» не относится к типу «PropertyStyle». Но (если вы не изменили этот код в своих кастомных шрифтах) ForgePropertyStyle действительно расширяет PropertyStyle. Итак, вы должны каким-то образом иметь два PropertyStyles в своем пути к классам?

person Richard Kennard    schedule 28.09.2012
comment
Клонированный плагин также зависит от артефакта metawidget-all, но если я изменю область действия с compile на test, я не смогу установить плагин. Я переименовываю ForgePropertyStyle в CustomFacesPropertyStyle (также *Config), но исключение такое же: плагин ссылается на ForgePropertyStyle (метавиджеты xml-файлов тоже изменены). У вас есть идеи, как устранить эту проблему. Я совершенно сбит с толку. - person azendh; 28.09.2012
comment
Проблема не в ForgePropertyStyle/CustomFacesPropertyStyle, поэтому переименование не поможет. Проблема (я думаю) в том, что у вас есть два org.metawidget.инспекции.impl.propertystyle.PropertyStyles в вашем пути к классам. Вы можете попробовать 1) удалить модуль scaffold-faces по умолчанию и просто установить свой собственный; 2) глядя на github.com/forge/plugin-spring-mvc, который является похожий на ваш плагин (также использует Metawidget); 3) задать этот вопрос на [email protected] - person Richard Kennard; 29.09.2012
comment
Проблема до сих пор не решена. Я понимаю ваш ответ, в пути к классам есть два метавиджета-все jar, но я не могу это исправить: у меня может не хватить навыков мавана. :( 1) не является приемлемой душой. 2) Я проверил, но не нашел разницы, как зависит модуль метавиджета. (как я пытаюсь, этот модуль глючит с текущим состоянием) 3) еще не пробовал, надеюсь, кто-нибудь может помочь здесь. Я думаю, что это проблема, связанная с maven, поэтому я продолжаю читать и пытаться :) - person azendh; 01.10.2012
comment
Как я ни пытался, plugin-spring-mvc у меня все еще не работает по другим причинам. - person azendh; 01.10.2012
comment
Наконец я пробую первое предложение, которое вы говорите. Удалите оригинальный плагин лиц, и я подтвердил, что проблема не в дублировании. Метавиджету SimpleWidgetResolver.openResource не удалось загрузить ресурс. Проблема существует ТОЛЬКО, когда я запускаю свою команду как плагин кузницы в кузнице. Если я запускаю команду в тесте junit (с getShell.execute), ресурс загружается правильно, и плагин также запускается. - person azendh; 02.10.2012