В Liferay 6.1 Класс ServletResponseUtil перемещен в пакет, отличный от Liferay 6.0:
//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.
Сейчас мы рассматриваем возможность обновления до 6.1, но во время внутреннего тестирования портлета я обнаружил, что есть несколько строк кода, в которых вышеуказанная зависимость нарушена. Существуют ClassNotFoundException на 6.1 во время выполнения.
Мой проект Eclipse настроен на 6.0.
Что мне теперь делать?:
Ведение двух разных ветвей кода портлета. Это выполнимо, но в долгосрочной перспективе может потребоваться слишком много усилий
Поддерживать два разных проекта Eclipse с одной базой кода, но с разными путями сборки (это только общая стратегия, может не сработать)
Включите хитрый взлом в код Java, чтобы легко построить для 6.0, один раз для 6.1 (может быть, фабрика ... это только смутная идея)
Включите новую задачу ant, которая собирает + развертывает для 6.1, хотя Eclipse настроен на сборку для 6.0
Удалите зависимость от класса ServletResponseUtil в целом, используйте другой класс, который делает то же самое, что и ServletResponseUtil.
Сделай что-нибудь еще