首页 > 解决方案 > 如何在 liferay 7 + OSGI 中获取 portlet 的版本?

问题描述

如何获得 liferay 7 的 .war portlet 版本。

例如,在 liferay 6.2 中,我有一个 .war,然后它在 tomcat webapps 文件夹中被分解,我可以通过查看以下一些属性来获得带有另一个脚本的版本:

TMP="$(cat $LIFERAY_FOLDER/tomcat-7.0.62/webapps/MyPortlet/WEB-INF/liferay-plugin-package.xml | awk -v FS="(MyPortlet-portlet/|/war)" '{print $2}' | grep "^.")"
echo -e "MyPortlet:\t\t\t$TMP" >> $OUTPUT_FILE

或者在 porlet 中获取一些静态文件的版本:

TMP="$(cat $LIFERAY_FOLDER/tomcat-7.0.62/webapps/MyPortlet/WEB-INF/src/content/Language_de.properties | awk -v FS="(TEXT_VERSION = )" '{print $2}' | grep "^.")"
echo -e "Text version of MyPortlet:\t\t$TMP">> $OUTPUT_FILE

如何在具有 liferay 7.1+ 的生产服务器中拥有此版本控制功能?

我需要能够自动检查当前部署的版本。默认情况下,gogo 工具在生产模式下未启用,我发现 telnet 访问有时会使整个 tomcat 崩溃,所以这是一个不可行的选项。即便如此,我只看到它允许访问捆绑版本,但无论如何访问一些静态文件。

谢谢。

标签: version-controlliferayliferay-7

解决方案


一种方法是通过 /api/jsonws (具有来宾访问权限)公开自定义远程服务,以获取版本。

您可以使用以下代码检索当前捆绑包版本:

public String getVersion() {

    Bundle bundle = FrameworkUtil.getBundle(XXXXImpl.class);

    return bundle.getVersion().toString();
}

推荐阅读