Перекомпиляция зависимостей с Maven - возможно?Любое повышение производительности? - PullRequest
6 голосов
/ 15 января 2012

Я думал о зависимостях в Maven.Maven загружает их, но неизвестно, для какой целевой версии JVM они скомпилированы и для какого компилятора.Возникает два вопроса:

  • Приведет ли перекомпиляция зависимостей к более быстрым библиотекам зависимостей? Я пытался найти это, но не нашел достаточного ответа.Я обнаружил, что для 1.6 существует Проверка разделения байт-кода , которая выполняется при компиляции с целью 1.6.
    Также возникает вопрос Есть ли улучшения производительности Java 6 в JDK, JVM илиоба? , где упоминается, что более новые версии javac могут генерировать более оптимизированный код.
  • Возможно ли с помощью Maven выполнить перекомпиляцию зависимых библиотек? Можно ли настроитьMaven загружает исходники, помещает туда информацию о цели 1.6 и выполняет mvn clean install ?
    Мне известно о плагине Maven Dependency и зависимость: источники гол.Это можно использовать для загрузки исходного кода.
    Существует также Плагин Maven Replacer , позволяющий заменять текст в файлах.Как указано в выпуске 58 , для него была реализована поддержка XPath.
    Можно ли реализовать его с помощью этих плагинов для зависимости, а также для его зависимостей для выполнения?Я не уверен, как выполнить это на зависимостях - возможно, с помощью плагина Maven Replacer, который вставляет конфигурацию в распакованные зависимости pom.xml?
    Или есть более простой способ настроить целевую версию Java с профилем сборки в пользовательском settings.xml , который будет иметь приоритет над настройками проекта и, следовательно, избегать pom.xml модификаций?

Ответы [ 2 ]

3 голосов
/ 15 января 2012

javac почти не имеет оптимизаций и тех, которые были там с самых первых дней.(И даже может считаться историческим) Если у вас есть код, построенный на Java 1.0, вы можете найти улучшение, но что-либо за последние десятки лет может быть столь же оптимальным в байт-коде, как и сегодня.

Большинствооптимизация выполняется в самой JVM, и вы должны обнаружить, что обновление 30 для Java 6 работает быстрее, чем обновление 0 для Java 6 даже для точно такого же кода.

1 голос
/ 16 января 2012

Давайте на минутку подумаем, что такое зависимость Maven.В самом общем смысле, это часть программного обеспечения, разработанная кем-то другим, проживающая свой собственный жизненный цикл, который:

  • упакован в архив,
  • , который существует в хранилище1006 *
  • под дескриптором версии (группа, артефакт, версия).

Это все гарантии Maven.Обратите внимание, что в нем даже не говорится, что это Java (например, ресурсы или нативные библиотеки).Немного.Слишком мало, чтобы требовать автоматической перекомпиляции зависимостей.

...