Очевидный способ для объединения нескольких банок? Предпочтительно использование Муравья

Команда Sort Members по умолчанию не имеет ярлыка.

Вы можете выполнить команду с помощью быстрого доступа ( Ctrl + 3 и ввести Sort Members) или добавить ярлык [ 1115] привязка в Окно> Предпочтения: Общие> Ключи .

Вы также можете добавить так называемое Сохранить действие , чтобы Элементы сортировки автоматически выполнялись при сохранении: в Проект> Свойства: Редактор Java> Сохранить действия включить Дополнительные действия , нажать Настроить ... а на вкладке Code Organizing включить Сортировать участников .

60
задан martin clayton 25 July 2011 в 19:28
поделиться

7 ответов

Просто используйте zipgroupfileset с Муравьем задача

<zip destfile="out.jar">
    <zipgroupfileset dir="lib" includes="*.jar"/>
</zip>

Zip, Это сгладит все включенное содержание библиотек банки.

57
ответ дан martin clayton 24 November 2019 в 17:33
поделиться

Вы могли проверить jarjar:

http://code.google.com/p/jarjar/

23
ответ дан Staale 24 November 2019 в 17:33
поделиться

Попытайтесь извлечь свой JAR к каталогу маршалинга сначала:

<target name="combine-jars">
    <mkdir dir="${marshall.dir}"/>
    <unzip dest="${marshall.dir}">
        <fileset dir="${external.jar.dir}">
            <include name="**/*.jar"/>
        </fileset>
    </unzip>
    <jar destfile="${combined.jar}" basedir="${marshall.dir"}>
    <delete dir="${marshall.dir}"/>
</target>

то, Где ${marshall.dir} временный каталог, ${external.jar.dir}, - то, где Вы сохраняете JAR, и ${combined.jar} целевой JAR.

9
ответ дан David Grant 24 November 2019 в 17:33
поделиться

Вы рассмотрели использование Знаток или некоторая другая система, которая управляет Вашими зависимостями автоматически? Затем Вы не должны были бы указывать, где каждая библиотека расположена, что их имена, и какие переходные зависимости Ваши прямые зависимости имеют. Вы просто заявили бы в одном месте, что зависимость и ее версия, и система заботилась бы о загрузке библиотек, конфигурировании пути к классу и разрабатывании проекта.

1
ответ дан Esko Luontola 24 November 2019 в 17:33
поделиться

Ответ Владимира правильный, но я считаю, что то, что он предлагает, подразумевает переупаковку всех банок в один большой файл out.jar, который затем передается задаче Ant Jar как единый или что-то в этом роде. В этом двухэтапном подходе нет необходимости. Я не уверен, связано ли это с версией Ant, но у меня Ant 1.7.1, и его задача понимает , что позволяет загружать все содержимое из сторонних банок напрямую.

<jar destfile="MyApplication.jar">
  <zipgroupfileset dir="lib" includes="*.jar" /> 
  <!-- other options -->
  <manifest>
    <attribute name="Main-Class" value="Main.MainClass" />
  </manifest>
</jar>
66
ответ дан 24 November 2019 в 17:33
поделиться

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

0
ответ дан 24 November 2019 в 17:33
поделиться

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

Предположим, что где-то при переходном закрытии проекта (рекурсивно все библиотеки и модули, требуемые для проекта, и все его зависимые проекты) есть две версии файла класса. Как Maven могла узнать, какой из них «правильный»? какой из них был задуман программистом?

Не может, потому что эта информация была потеряна, когда явные зависимости были отброшены в пользу транзитивных (чтобы сохранить типизацию XML).

0
ответ дан 24 November 2019 в 17:33
поделиться
Другие вопросы по тегам:

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