Попытка сборки Ant с помощью зависимости от Weblogic 10.3 - PullRequest
2 голосов
/ 08 марта 2011

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

В проектах Ant я либо использую ivy, либо у меня есть каталог lib, содержащий необходимые сторонние jar-файлы. Это помогает мне четко определить все зависимости и позволяет разработчикам легко создать модуль для своей системы. Да, есть некоторая зависимость от правильной версии JDK, и в некоторой степени от правильной версии Ant, но даже они немного гибкие. Помимо Ecipse и Jenkins / Hudson, вы можете определить точные версии JDK и Ant, которые вы хотите использовать.

Проблема в том, что этот проект зависит от Weblogic 10.3 (он же 11g). До появления Weblogic 10 вы могли бы просто покончить с использованием только файла weblogic.jar и, возможно, одного или двух других jar-файлов. Начиная с Weblogic 10, банки теперь «модульные».

Когда я делаю сборку, я все равно просто включаю weblogic.jar в мой путь к классам. Однако weblogic.jar в своем файле MANIFEST.MF содержит ссылки на каталог ..\..\..\modules\features (который фактически является родительским каталогом, который содержит Weblogic 10.3!). Здесь находятся банки, в которых нет путей к классам, но сами они имеют путь к классам, встроенный в MANIFEST.MF, который указывает на другие банки. Это, в свою очередь, может относиться к другим банкам.

Я полагаю, у меня есть один из следующих вариантов:

  1. Включите все 10900 файлов, 700Mb Weblogic, в мой исходный репозиторий для каждого модуля.
  2. Каким-то образом загрузите Weblogic, используя Maven или Ivy в качестве одного tarball. Распакуйте файл, затем выполните сборку.
  3. Скажите разработчикам, что они должны загрузить Weblogic 10.3, а затем изменить процесс сборки, чтобы указать, где они установили Weblogic 10.3.

Ни один из этих вариантов на самом деле не подходит мне прямо сейчас.


UPDATE

Как отмечали другие, я мог попытаться найти различные банки, и я сделал именно это с Weblogic 9.x и более ранними версиями. Например, простой сценарий оболочки:

find $WEBLOGIC_HOME -name "*.jar" | while read jar
do
   echo "JAR NAME = jar"
   jar tvf $jar
done | less

будет отображать содержимое всех JAR-файлов Weblogic на моем терминале. Если я обнаружу в сборке, что класс javax.servlet.ServletException отсутствует, я могу найти javax\servlet\ServletException.class, а затем вернуться к поиску JAR NAME = и найти имя банки.

Однако в Weblogic 10 я обнаружил, что зависел от javax.servlet.ServletException, и проследил его обратно до C:\bea\modules\javax.servlet_1.0.0.0.0.jar, которого даже нет в моем каталоге $WEBLOGIC_HOME. Это потому, что C:\bea\wlserver_10.3\server\lib\weblogic.jar содержит путь к классу ..\..\..\modules\features\somejar.jar. И somejar.jar не содержит классов. Вместо этого он содержит ссылку на другой jar в своем classpath, который затем ссылается на javax.servlet_1.0.0.0.0.jar.

Итак, теперь мне нужно добавить еще четыре jar-файла, один из которых не содержит классов, и если я хочу эмулировать структуру Weblogic, у меня должны быть следующие файлы в моем каталоге lib:

  • weblogic.lib\wlserver_10.3\server\lib\weblogic.jar
  • weblogic.lib\modules\features\somejar.jar
  • weblogic.lib\modules\someOtherJar.jar
  • weblogic.lib\modules\javax.servlet_1.0.0.0.0.jar

Хорошо, это заняло около 2 часов. Одна проблема с зависимостью уменьшилась, еще 43 осталось.

Как видите, это может занять несколько дней, даже недель, и закончится десятками банок в моем ... э-э ... минимальном Weblogic 10 модуле. В конце концов, этот минимальный модуль может быть не намного меньше.

Кто-нибудь знает, может быть, некоторую документацию, которая позволяет мне быстро определить, где существуют эти зависимости, или способ построения дерева зависимостей, так что, когда мне нужен classpath com.bea.weblogic.foo.bar.barfoo, я можно быстро увидеть, что мне нужны эти 7 или 8 банок?

Ответы [ 2 ]

1 голос
/ 22 июня 2011

Я сдался.Я просто установил Weblogic 10 и проверил в build.xml, что $WEBLOGIC_HOME установлено.

1 голос
/ 08 марта 2011

Полагаю, вам не понадобится весь 700 МБ пакет для сборки.Таким образом, вы можете (да, это определенная работа) создать свой собственный файл "weblogic-ivy", который описывает минимальный jar-набор для сборки и тестирования.Опубликуйте этот файл в репозитории вашей компании и используйте его в своей конфигурации зависимостей, и вы и ваши разработчики сможете просто работать с минимальной конфигурацией, которая не должна быть намного больше, чем у других пакетов app-server-client.

...