我目前正在进行从6.0
到6.2.2 GA3
的救生升级。我尝试升级服务portlet。6.0版本的服务portlet是使用mvn服务portlet原型构建的,而6.2版本的原型是liferay-servicebuilder-archetype
。不同之处在于,在6.2 liferay servicebuilder原型中有两个模块:Module 1:
是一个portlet,它具有我们的代码逻辑Module 2:
是具有在liferay:build-service
期间生成的类文件的服务portlet。这些文件被归档到jar文件中,该文件稍后在portlet(模块1)模块中用于创建WAR文件。
而在6.0中,没有模块的概念。liferay:build-service
期间生成的服务类文件在src/
下的服务文件夹中生成。
此liferay-servicebuilder-archetype
仅适用于mvnrepository中的Liferay 6.1
+版本。我对6.1版本中这个新原型的需求的猜测是:
1.为了避免错误地将自动生成的服务文件提交给我们的版本控制回购
2.更加模块化
但有了这个新原型,我发现构建过程消耗了大量的置换空间和堆空间(每次运行mvn clean package liferay:build-service
时,我都必须将堆和置换空间增加一倍,这是通过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.这个新原型的需求是为了上面提到的两个好处(我猜是这样),或者还有其他什么吗
在等待这个问题的答案超过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.
如果有一个更令人信服的答案,我会选择它作为最好的答案。
编辑::::发现此链接很有用https://www.liferay.com/community/forums/-/message_boards/message/51303796