Пакет и выполненный JAVA-приложение с пружинными зависимостями

Мы можем избежать булевых флагов и счетчиков, если тщательно настроим нашу рекурсию:

def removepairs(numbers):

    if not numbers:  # base case #1, empty
        return numbers

    first, *second_on = numbers

    if not second_on:  # base case #2, one element
        return numbers

    second, *third_on = second_on

    if first == second:
        return removepairs(third_on)

    result = [first] + removepairs(second_on)

    if result == numbers:
        return numbers  # base case #3, no change!

    return removepairs(result)

print(removepairs([1, 2, 3, 3, 2, 1, 5, 6, 7]))

ВЫХОД

> python3 test.py
[5, 6, 7]
> 
5
задан starblue 19 February 2009 в 09:54
поделиться

9 ответов

Развертывание Java все еще глупо и утомительно в 2009. Таким образом, обычная опция состоит в том, чтобы записать этот маленький сценарий. При помещении всех БАНОК в один каталог (скажите, lib\), можно использовать общий сценарий, который создает путь к классу автоматически (см. эту запись в блоге). Я предлагаю добавить a cd /d %~dp0 вначале к CD в каталог сценария.

У знатока 2 есть плагин, который может собрать Ваше приложение в одном "супер JAR" (mvn assembly:assembly). Это работает, если Вы не используете драйвер DB2 JCC (который содержит "COM.ibm". пакеты, которые преобразовываются в com.ibm.-> ClassNotFoundException).

Последнее решение, если у Вас уже есть МУРАВЕЙ build.xml, который работает, состоит в том, чтобы распаковать все зависимые БАНКИ и создать "супер JAR" самих.

4
ответ дан 14 December 2019 в 04:48
поделиться

С Муравьем Вы могли сделать что-то вдоль следующего:

  1. Соберите в группу все зависимости.
  2. Упакуйте файл JAR со своим приложением и встройте ссылки на зависимости в MANIFEST.MF-файле с "Путем к классу" - директива в банке. Это должно избавить от необходимости построение пути к классу в запуске.
  3. Свяжите все это вместе как архив и распределите его. Должно быть достаточно выполнить банку непосредственно с "Java - банка your.jar".

Для управления Вашими зависимостями Вы могли пойти с Ivy. Во многом как Знаток это может получить зависимости во время изготовления от того, какой бы ни репозитории Вы настраиваете, включая репозитории Знатока или Ваш собственный частный репозиторий.

2
ответ дан 14 December 2019 в 04:48
поделиться

Мы нашли, что лучшее решение для управления зависимостью и упаковки состоит в том, чтобы использовать Знатока с плагином блока. Это обеспечивает очень изящное средство для упаковки Вас проекты, наряду со всеми зависимостями во время выполнения и поддержкой сценариев в двоичное распределение. Одно из самых больших преимуществ использования блоков - то, что возможно разделить Ваши проекты на отличные компоненты согласно необходимости. При использовании Интеграции Spring его довольно общее, у Вас были бы отдельные компоненты, которые будут разделены по нескольким машинам. Плагин блока позволяет Вам настраивать это к своим требованиям.

1
ответ дан 14 December 2019 в 04:48
поделиться

Мы используем Знатока 2 с m2eclipse плагином; довольно хорошие работы. Плагин имеет представление графа зависимостей, покажет конфликты и т.д.

Теперь, если Вы хотите упаковать все свои зависимости в единственную банку, можно проверить Ссылки Банки Банки (никакое ребячество!).

0
ответ дан 14 December 2019 в 04:48
поделиться

Много Ваших проблем исчезает, если Вы делаете свой исполняемый файл JAR и добавляете декларацию включая ClassPath. У Вас действительно есть к ZIP JAR и его зависимости вместе, к сожалению, но Ваши проблемы ПУТИ К КЛАССУ заботятся о.

Что относительно того, чтобы создать пакет OSGi? Я еще не изучил его сам, но это, как предполагается, следующая вещь для упаковочных приложений Java. Это используется в серверах приложений как dm Сервер Spring. Возможно, это может помочь Вам также.

0
ответ дан 14 December 2019 в 04:48
поделиться

Можно использовать средство запуска, которое устанавливает путь к классу правильно. Затем у Вас будет намного больше гибкости для упаковки БАНОК. Вы могли легко поместить их всех в каталог, который является намного более чистым, чем создание "побочной" ueber банки...

Одно из такого средства запуска является средством запуска свободного городского населения.

0
ответ дан 14 December 2019 в 04:48
поделиться

Вся эта любовь Знатока и никто упоминают Ivy?О, Боже!

Ну, здесь Ant Ivy и здесь сравнение с Maven2. Смотрите на него также прежде, чем идти почти со всеми, предлагает.

1
ответ дан 14 December 2019 в 04:48
поделиться

Плагин maven-assembly-может быть не лучшим выбором. Вы должны взглянуть на плагин onejar-maven, как описано здесь:

http://blog.jayway.com/2009/03/22/executable-jar-with-onejar-maven-plugin/

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

0
ответ дан 14 December 2019 в 04:48
поделиться

В моем сценарии сборки МУРАВЬЯ я генерирую *.bat и сценарии запуска *.sh со списком БАНОК, динамично созданных во время изготовления на основе содержания dir lib сборки.

Например, для создания списка банок с соответствующими разделителями:

<path id="jar-classpath">
    <fileset dir="${build.war.dir}/WEB-INF/lib">
        <include name="**/*.jar" />
    </fileset>
</path>

<pathconvert refid="jar-classpath" targetos="unix" property="exec.classpath.unix">
       <map from="${build.war.dir}\WEB-INF\lib\" to="../lib/"/>
</pathconvert>

<pathconvert refid="jar-classpath" targetos="windows" property="exec.classpath.windows">
        <map from="${build.war.dir}\WEB-INF\lib\" to="../lib/"/>
</pathconvert>

Можно затем использовать ${exec.classpath.unix} и ${exec.classpath.windows} значения в сценариях вызова Java.

0
ответ дан 14 December 2019 в 04:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: