Можно ли использовать ConfigurationAPI в Liferay DXP для портлета Plugin SDK? - PullRequest
0 голосов
/ 25 апреля 2019

Я следовал двум учебным пособиям по использованию COnfigurationAPI в портлете SDK плагинов Liferay dxp, построенном с использованием Ant / Ivy. API конфигурации 1 API конфигурации 2 .

Ниже используется класс конфигурации:

package com.preferences.interfaces;

import com.liferay.portal.configuration.metatype.annotations.ExtendedObjectClassDefinition;

import aQute.bnd.annotation.metatype.Meta;

@ExtendedObjectClassDefinition(
    category = "preferences",
    scope = ExtendedObjectClassDefinition.Scope.GROUP
)
@Meta.OCD(
    id = "com.preferences.interfaces.UnsupportedBrowserGroupServiceConfiguration",
    name = "UnsupportedBrowser.group.service.configuration.name"
)
public interface UnsupportedBrowserGroupServiceConfiguration {

    @Meta.AD(deflt = "", required = false)
    public String displayStyle();

    @Meta.AD(deflt = "0", required = false)
    public long displayStyleGroupId(long defaultDisplayStyleGroupId);

}

После следующих действий я получаю сообщение об ошибке ниже:

ОШИБКА [Обновление конфигурации CM (Обновление ManagedService: pid = [com.preferences.interfaces.UnsupportedBrowserGroupServiceConfiguration])] [org_apache_felix_configadmin: 97] [org.osgi.service.cm.ManagedService, id = 707 // bundle com.liferay.portal.configuration.settings-2.0.15.jar? lpkgPath = C: \ dev \ Liferay \ osgi \ marketplace \ Liferay Foundation.lpkg]: непредвиденная проблема с обновлением конфигурации com.preferences.interfaces.UnsupportedBrowserGroupServiceConfiguration {org.osgi .service.cm.ConfigurationAdmin} = {service.vendor = Apache Software Foundation, service.pid = org.apache.felix.cm.ConfigurationAdmin, service.description = Конфигурация Спецификация службы администратора 1.2 Реализация, service.id = 56, служба. bundleid = 643, service.scope = bundle}

Причина: java.lang.IllegalArgumentException: неверное количество аргументов

Итак, нужен ли этот процесс как обязательный модуль osgi или мы можем сделать это, используя портлет plusd sdk, также построенный с использованием ant?

1 Ответ

1 голос
/ 26 апреля 2019

Не отключая сообщение об ошибке Caused by: java.lang.IllegalArgumentException: wrong number of arguments:

То, как вы создаете свой плагин (Ant, Maven, Gradle, вручную), не имеет значения, если вы создаете плагин, который будет понят во время выполнения. aQute.bnd.annotation.metatype.Meta твердо указывает на мир OSGi и делает почти наверняка необходимым модуль OSGi. Вы можете построить это с помощью Ant, конечно. Даже в Ant вы можете встраивать такие инструменты, как bnd, или вы можете написать правильный Manifest.mf для включения в ваш модуль вручную (шучу - вы не хотите делать это вручную, но это будет работать).

Рекомендация: вместо того, чтобы все перебирать: попробуйте воспроизвести это с минимальным примером в Gradle или лучшей Liferay Workspace (которая основана на Gradle), просто чтобы включить всю автоматическую проводку. Проверьте, имеет ли это значение, и сравните сгенерированный вывод из вашего процесса сборки Ant с выходом рабочей области. Обратите особое внимание на Манифест.

Чтобы построить правильный Манифест, вы хотите использовать bnd - если Манифест окажется вашей проблемой: найдите способ принять bnd - если это прощается с Ant, или путем настройки скрипта сборки остается ваш решение.

...