我目前正致力于从6.0
到6.2.2 GA3
的liferay升级。我尝试升级服务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/
下的services文件夹中生成的。
此liferay-servicebuilder-archetype
仅适用于mvnrepository中显示的Liferay 6.1
+版本。我猜测6.1版本需要这个新的原型是:
1.避免错误地将自动生成的服务文件提交到我们的版本控制存储库
2.更加模块化。
但是有了这个新的原型,我发现构建过程消耗了大量的permgen空间和堆空间(每次运行mvn clean package liferay:build-service
时,我必须将堆和permgen空间加倍,如通过jvisualvm观察到的那样)。我能够创建相同的portlet,services-portlet-archetype
已成功部署并在6.2 GA3服务器中工作(没有额外的permgen空间和堆空间)。但在构建期间没有发现任何内存问题。
我的问题是:
1.这两种原型中的哪一种(liferay-servicebuilder-archetype
或services-portlet-archetype
)对于liferay 6.2 GA3来说是一种很好的做法。
2.如果我需要升级我在项目中使用的所有20多个portlet,我需要从原型创建吗? (需要花费大量的时间和精力)
3.如果使用liferay-servicebuilder-archetype
是最佳实践,如何解决此额外内存消耗问题。目标文件夹似乎比services-portlet-archetype
目标文件夹中产生更多的类文件
4.对这个新原型的需求是针对上面提到的两个好处(我猜想)还是还有其他什么?
答案 0 :(得分:0)
在等待2周以上的回答这个问题后,我假设我的以下猜测是对这个问题的正确答案。
The need for this new archetype from 6.1 version is:
1. To avoid committing the auto generated services files by mistake to our version control repo.
2. To be more modular.
如果有更有说服力的答案,我会选择最佳答案。
EDIT :::: 发现此链接很有用 https://www.liferay.com/community/forums/-/message_boards/message/51303796