使用Maven创建liferay应用时候注意archetype的版本

 

我们用Maven创建liferay应用(比如portlet,theme)时,常常有个版本选择,如图:

使用Maven创建liferay应用时候注意archetype的版本_第1张图片

默认的“Show the last version of Archetype only” 是被选中的,这时候我们只能显示最新版本的archetype,如果我们用最新版本的archetype开发应用,则最终当应用部署到低版本的容器中(比如我们目标的liferay server版本是6.1.0),就会出以下的错误:

  
  
  
  
  1. Copying portlets for /app/Liferay/RI/liferay-portal-6.1.0-ce-ga1/deploy/paas_integration_portlet.war 
  2. 03:11:17,971 ERROR [AutoDeployDir:197] com.liferay.portal.kernel.deploy.auto.AutoDeployException: com.liferay.portal.kernel.deploy.auto.AutoDeployException: paas_integration_portlet.war does not support this version of Liferay 
  3. com.liferay.portal.kernel.deploy.auto.AutoDeployException: com.liferay.portal.kernel.deploy.auto.AutoDeployException: paas_integration_portlet.war does not support this version of Liferay 

 

错误分析:

显然,错误提示是低版本(6.1.0)的liferay 容器的PortletAutoDeployListener当探测到${liferay.home}/deploy 目录中有我们maven 部署上去的portlet应用时,因为看到portlet应用版本高于liferay容器自己的处理能力,所以无法处理。

 

验证猜想:

我们查看portlet应用的WEB-INF/liferay-plugin-package.xml文件,果然发现,应用的版本太高(6.1.0)

 

解决这个部署这个portlet到容器的方法:

当我们把portlet的版本号改到低于(或者等于)liferay容器的版本号时(也就是吧这个<liferay-version>元素从6.1.10改为6.1.0),问题就解决了。

 

更通用的解决方法:

为了防止以后的错误发生,在我们用maven向导创建portlet时,请关闭Show the last version of Archetype only 选项,这样我们的应用版本就可以选择了,我们选择低于目标服务器版本号的版本,就不会出类似错误了。

 

你可能感兴趣的:(ArcheType,版本)