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