在Liferay的6.1级ServletResponseUtil已被移动到不同的包比在Liferay的6.0:如何保持不同的portlet代码库对Liferay的6.0和6.1
//Liferay 6.0,
// this class lives in util-java.jar in the default tomcat web app, /webapps/ROOT/lib.
import com.liferay.util.servlet.ServletResponseUtil;
//Liferay 6.1
// class lives in portal-service.jar in directory tomcat-7.../lib/ext/
//import com.liferay.portal.kernel.servlet.ServletResponseUtil;
类是在我们的代码中使用这样的:
String result = personComponentImpl.process(request);
response.setContentType("text/xml");
try {
ServletResponseUtil.write(response, result);
}
catch (Exception e) {
if (_log.isWarnEnabled()) {
_log.warn(e, e);
}
}
我必须维护和改进为Liferay 6.0版本编写的portlet。 现在我们正在考虑升级到6.1,但是在portlet的内部测试中,我发现有几行代码会破坏上述依赖关系。运行时6.1上有ClassNotFoundExceptions。
我的eclipse项目设置为6.0。
什么应该怎么办?:
维护portlet代码的两个不同的分支。这是可行的,但可能是从长远来看
维持两个不同的Eclipse项目与一个代码库太多精力,但具有不同的构建路径(这只是一个总体战略,可能没有真正的工作)
在java代码中包含一个聪明的黑客,轻松构建6.0,一次为6.1(也许是工厂......这只是一个模糊的想法)
包含一个新的ant任务,构建+部署6.1,尽管Eclipse设置为6.0版本
Re完全移动对ServletResponseUtil类的依赖关系,使用与ServletResponseUtil相同的另一个类。
做别的事情
我只是在这里查看这个类的源代码http://docs.liferay.com/portal/6.0/javadocs/src-html/com/liferay/util/servlet/ServletResponseUtil.html,现在将替换旧的导入语句(见上面),导入我自己的包,这将是一个定制的ServletResponseUtil。 – knb 2012-03-09 10:04:55