2009-08-11 2 views
1

Я использую тот же исходный код для приложения GWT 1.5 и GWT 1.7.GWT условная компиляция

Мне интересно, есть ли способ условно скомпилировать части кода Java для одной или другой версии.

Я знаю, что есть способ сделать это для виджетов и браузеров в XML-файле модуля.

+0

Я так не считаю. Зачем вы собираете два источника GWT? Мы перешли от 1,5 до 1,7 без проблем. –

+1

Мы сделали это. Но в одном случае старый (1.5) и новый (1.7) скомпилированный код не ведут себя одинаково. Это комбинация java и встроенных скриптов. Перемещение старого (1.5) кода на новые интерфейсы, удаляющие все устаревшие вызовы, в настоящее время очень много работает. – Drejc

ответ

1

Решение очень простое.

String version = GWT.getVersion(); 
if (version.startsWith("1.5")) 
{ 
    // do something the 1.5.* way 
} 
0

Если вы действительно этого хотите, я предполагаю, что подход будет заключаться в использовании генератора.

С генератором у вас может быть отложенное переплетение (немного интроспекция бедного человека).

Чтобы получить доступ к коду 1.5 или 1.7, вам необходимо определить общий API в интерфейсе и использовать GWT.create для получения конкретной реализации.

0

если (version.startsWith ("1.5")) { // сделать что-то 1.5. * Путь }

на самом деле своего рода плохая идея. В идеале вы должны использовать абсолютные значения строки здесь, потому что компилятор GWT будет оценивать равенство и обрезать недостижимый код внутри условного условного выражения из скомпилированного вывода. Использование .startsWith означает, что весь код окажется в конечном приложении.

К сожалению, версия GWT не является частью времени компиляции. Возможно, лучший способ сделать это - создать пустую реализацию Generator, которая просто возвращает «ClassName15» или «ClassName17» из вызова вашего модуля для «ClassName». Затем во время компиляции вы можете вызвать About.version() из генератора и узнать, какая версия находится во время компиляции.

+0

Спасибо, что указали это, но это единственное решение, которое я нашел. И это только для небольшого фрагмента кода. Таким образом, решение работает отлично для меня. – Drejc

Смежные вопросы