Liferay DXP中的ConfigurationAPI可以用于插件sdk portlet吗?

问题描述 投票:0回答:1

我已经按照给定的2个教程在使用Ant / Ivy构建的Liferay dxp插件SDK portlet中使用COnfigurationAPI。 COnfiguration API 1 COnfiguration 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 = 7082,bundle = 297 // 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 = Configuration Admin Service Specification 1.2 Implementation,service.id = 56,service.bundleid = 643 ,service.scope = bundle}

引起:java.lang.IllegalArgumentException:参数个数错误

那么,这个过程是否需要osgi模块作为强制性,或者我们可以使用使用ant构建的plusings sdk portlet来实现吗?

configuration liferay-7 liferay-dxp
1个回答
1
投票

没有解析错误消息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工作区(基于gradle)中的最小示例来重现这一点,只是为了获得所有自动接线。检查它是否有所作为并比较生成的输出来自您的Ant构建过程与工作区输出。特别注意清单。

为了构建正确的Manifest,你想使用bnd - 如果Manifest证明是你的问题:找到一种方法来拥抱bnd - 如果那是通过对Ant说再见,或者通过调整你的构建脚本仍然是你的决定。

© www.soinside.com 2019 - 2024. All rights reserved.