Я хотел бы использовать JDK 1.6 для ветки проекта, в то время как другие продолжают использовать JDK 1.5. Разработчики хотят иногда переключаться между ними.
Так что же лучший способ сказать javac Муравья , какой JDK использовать? Под лучшим я подразумеваю надежный, прозрачный, не требующий большого объема обслуживания, совместимый с исходным кодом (самого Ant и JDK, конечно, нет, но они живут в стандартных местах).
Очевидное - лучше, чем лучшее - я думаю, будет вне Ant : продолжайте изменять переменную JAVA_HOME env. Однако это потребует от разработчиков ручного переключения (еще одна вещь, которую нужно помнить: подвержена ошибкам), меняющего все серверы -many-build (больше работы для меня сейчас).
В поисках некоторого простого атрибута javac, например, jdk-path
, я заметил несколько (вместо чтения в сети и в SO):
compiler
- достаточно справедливо, но в документах говорится " modern: .. javac1.5 и javac1.6 .. как псевдонимы " .. Для меня это говорит о том, что это ничего не изменит - будет ли это?
source
- похоже, относится только к версии JLS (хотя не% 100 очищено из документов, связанных выше)
target
- версия байт-кода
bootclasspath
- некоторые SO-ответы упоминают об этом, но довольно нечетко и кажутся хакерскими
executable
- путь к javac, но не к библиотекам .. - кажется наиболее близким совпадением, неявно указывающим путь JDK? ОБНОВЛЕНИЕ: подтверждено JB Nizet
fork
- похоже, мне здесь нужно истина (иначе он просто проигнорирует вышеупомянутое без ошибки?). ОБНОВЛЕНИЕ: Есть ли какие-либо последствия для производительности по сравнению с дефолтом? (Я полагаю, что времена запуска JVM лучше, но все же)
Итак, похоже, что ни одна из этих справок сама по себе не является ... является ли какая-либо комбинация этих эквивалентов настройкой JAVA_HOME перед запуском Ant?
Я имею в виду некоторые хаки (например, обертывание исполняемого файла ant на каждой платформе просто для установки этого env var - довольно печально), но я действительно надеюсь, что что-то пропустил:)