Упаковка и развертывание программы Jython из Eclipse - PullRequest
3 голосов
/ 13 мая 2010

Таким образом, я был заперт в написании некоторого кода Jython. Я использую последнюю версию Eclipse IDE с плагином PyDev для разработки. До сих пор все было умеренно терпимым. Я получил все мои скрипты Python, и я успешно включил пару файлов JAR и каталог классов другого проекта Java в качестве внешних зависимостей. В Eclipse IDE все работает нормально.

Теперь мне нужно все упаковать и развернуть. Из того, что я могу собрать, лучший способ сделать это было бы упаковать все в файл JAR. Документация Jython предлагает начать с файла jython.jar и добавить его. ХОРОШО. Поэтому я изменяю свой основной модуль python и начинаю добавлять весь свой источник python в JAR.

Выполняется, но, конечно, не может найти все внешние зависимости.

Как можно добавить внешние файлы JAR, чтобы их правильно видел интерпретатор Jython? Как можно управлять более сложными зависимостями в такой конфигурации?

Есть ли плагин для Eclipse или что-то вроде Ant или Maven, который может выполнить все эти шаги для меня одним нажатием кнопки?

Я не могу быть первым человеком, которому нужно было развернуть код Jython со сложными зависимостями, могу ли я?

Ответы [ 2 ]

3 голосов
/ 17 мая 2010

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

Оказывается, что в Eclipse начиная с 3.5 есть опция экспорта проекта для Java -> Runnable JAR File. Если вы используете эту опцию, вы можете указать на основной класс Java в мастере экспорта. У вас также есть возможность переупаковать все файлы JAR, от которых вы зависите, в своем новом файле JAR. Обязательно установите флажок, чтобы сохранить экспорт как сборку ANT, чтобы можно было быстро повторить процесс. Обратите внимание, что в первый раз, когда вы делаете это через интерфейс, может произойти сбой, но он все равно будет создавать файл JAR.

Теперь вот где это становится странным. Чтобы отследить все зависимости, я все еще использую в своем проекте в основном неполную сборку Maven. Я создаю Maven .POM файл. И я рассказал Maven, какова моя внешняя зависимость JAR. Затем я сказал Maven сделать обновление зависимостей для меня. Как и ожидалось, в мой Maven-репозиторий все потянуло.

Теперь, когда я делаю сборку ANT, кажется, что он получает свой список JAR для включения в окончательную сборку от Maven. Я не совсем уверен, должно ли это работать таким образом. Я также не уверен на 100%, что это работает. Думаю, я узнаю, когда мне нужно будет добавить еще один JAR-файл в проект.

В любом случае, если вы будете следовать этому вопросу , вы увидите, что вы можете взять последние сборки Jython и извлечь файл org.python.util.JarRunner.java и использовать его в своем собственном проекте. , Это ваш класс Java.main, на который вам нужно будет указать сборку ANT. Оттуда конвертируйте ваш основной скрипт Python / Jython в скрипт run , о котором говорилось в этом вопросе.

Затем создайте еще одну копию JAR-файла Jython в своем каталоге Jython. Этот должен иметь каталог / Lib, извлеченный в JAR. Сохраните его, а затем укажите свой вариант Jave Build для Eclipse IDE для проекта PyDev на этот JAR-файл как внешнюю зависимость. Ваш JarRunner теперь будет работать и выполнять файл run .py в Jython.

Если все это работает, то вы сможете повторно запустить экспортированную сборку ANT, полученную ранее, и в итоге вы получите один файл JAR, который вы можете выполнить в командной строке как:

java -jar {yourjar} args

И распространять среди своих клиентов без каких-либо дополнительных зависимостей.

Если это все кажется немного запутанным, то это так. Если у кого-то есть лучший способ настроить все это с помощью Eclipse, пожалуйста, дайте мне знать.

0 голосов
/ 02 сентября 2011

Сделайте свою жизнь проще и используйте Maven и подключаемый модуль mavenjython .

См. Мой ответ на этот вопрос: Использование Jython с Maven

Вы получаете полную автоматизацию процесса сборки и развертывания, и в результате получается jar, включающий jython и все другие зависимости.

...