我目前正在将 Liferay 从升级6.0
到6.2.2 GA3
. 我尝试升级服务 portlet。6.0 版本的服务 portlet 是使用 mvn services-portlet-archetype 构建的,而 6.2 版本的原型是liferay-servicebuilder-archetype
. 不同之处在于,在 6.2 liferay-servicebuilder-archetype 中有两个模块:
Module 1:
一个是具有我们的代码逻辑的 portlet,一个
Module 2:
是 services-portlet,它具有在liferay:build-service
. 这些文件被归档到 jar 文件中,该文件稍后在 portlet(模块 1)模块中用于创建 WAR 文件。
而在 6.0 中,没有模块的概念。期间liferay:build-service
生成的服务类文件在src/
.
这liferay-servicebuilder-archetype
仅在mvnrepositoryLiferay 6.1
中看到的 + 版本中可用。我对 6.1 版本需要这个新原型的猜测是:
1. 为了避免错误地将自动生成的服务文件提交到我们的版本控制存储库。
2. 更加模块化。
但是有了这个新的原型,我发现构建过程会消耗大量的 permgen 空间和堆空间(每次运行时我都必须将堆和 permgen 空间加倍,mvn clean package liferay:build-service
正如通过 jvisualvm 观察到的那样)。我能够创建相同的 portlet,services-portlet-archetype
成功部署并在 6.2 GA3 服务器中工作(没有额外的永久空间和堆空间)。但是在构建过程中没有发现任何内存问题。
我的问题是:
1. 这两个原型(liferay-servicebuilder-archetype
或services-portlet-archetype
)中的哪一个是liferay 6.2 GA3 的好习惯。
2. 如果我需要升级我在项目中使用的所有 20 多个 portlet,我是否需要从原型创建?(花费大量时间和精力)。3.如果使用是最佳实践
,如何解决额外内存消耗的问题。liferay-servicebuilder-archetype
目标文件夹似乎比services-portlet-archetype
目标文件夹产生更多的类文件。
4. 需要这个新原型是为了上面提到的两个好处(我猜到了)还是还有其他什么?