2012-05-31 2 views
2

У меня есть проект, который содержит несколько webapps и jsps и строит отлично как .war-файл.Netbeans для создания webapp для Tomcat5 и Tomcat7 с использованием Maven

Теперь мне нужно убедить Netbeans и Maven построить как версию Tomcat-7, так и версию Tomcat-5. Может ли кто-нибудь указать мне в правильном направлении?

Я также хотел бы иметь возможность добавлять другой web.xml в зависимости от того, для какого клиента я создаю, но, как я полагаю, я смогу добиться того, чтобы это произошло, как только на это будет дан ответ.

Я думаю, мне нужно использовать два профиля в моем файле, но я пом понятия не имею, что мне нужно поставить в каждом, чтобы выбрать:

a) The correct jdk to compile with (JDK 6 for TC-7 and JDK 5 for TC-5) 
b) The correct version of the javax libraries. 

Я использую Netbeans 7.1.2.

ответ

1

Оптимальный результат будет иметь один файл войны, который будет работать как на Tomcat 5, так и на Tomcat 7 и будет одинаковым для каждого клиента.

Вы можете использовать профили maven, чтобы принять сборку для каждого клиента, но я рекомендую экпортировать отдельный конфиг в JNDI или файл внешних свойств, считываемый через некоторую переменную среды. Spring предлагает PropertyResolverconfigurer сделать это (например)

Поскольку вы хотите поддержать Tomcat 5, я предполагаю, что ваш проект построен с использованием Java 1.5? Это должно работать и на Tomcat 7.

В зависимостях javax должна быть предоставлена ​​область в ваших файлах pom.xml. Поэтому они не будут развернуты. Если вашему приложению требуется определенная версия банки, которая является частью tomcat, вы также сможете решить эту проблему с помощью профилей. Но это может противоречить профилям для каждого клиента.

Если есть большие различия между версией Tomcat 5 и Tomcat 7, может возникнуть идея создать 3 модуля - все с использованием упаковки «война». Один, содержащий «нейтральные» файлы, один из которых содержит файлы tomcat 5 и один файл tomcat 7. Проекты tomcat будут использовать нейтральный модуль в качестве зависимости от файла войны, а maven - оверлей войны. Таким образом, одна сборка будет выпускать как версию tomcat 5, так и версию tomcat 7 (и файл нейтральной войны, который не используется для развертывания).

согласно http://tomcat.apache.org/whichversion.html минимальная версия java от tomcat 5 - java 1.4. Но это связано с тем, что работает tomcat. Tomcat 7 должен также работать с байт-кодом Java 1.5. Только его JDK составляет 1,6. Вы можете использовать 1.5 для исходной и целевой версии плагина maven-compiler для целевой версии.

Но я думаю, что должно быть возможно создать сборку tomcat 5, которая также будет работать на tomcat 7. У вас есть зависимости, которые конфликтуют между двумя версиями? или вы предварительно скомпилируете jsp-файлы?

Для сборки maven вам понадобится только один jdk (1.6), чтобы иметь возможность собирать источники для старой целевой версии.

+0

Я хочу запустить под TC7 на моей машине Dev, потому что у Netbeans есть некоторые действительно приятные функции для отладки под TC7. Однако моя версия релиза должна быть совместима с TC5 и строить с использованием JDK5, потому что большинство ошибок будет отображаться во время сборки. Для меня это означает, что и JDK, и JAVAX libs должны меняться от одной сборки к другой, и я не вижу никакого способа заставить Maven сделать это. – OldCurmudgeon