resource module compilation

Oct 15, 2009 20:22

Если указать include-resource-bundles, то что будет в итоговом resource module? Ошибаетесь - в итоговом будут не только указанное вами, но и все, что будет найдено компилятором по ResourceBundle. Казалось бы - установить use-resource-bundle-metadata в false - но в этом случае вы получите скомпилированный модуль с нормальным factory (то есть factory будет содержать список якобы содержащихся resource bundles), но без соответствующих классов.

Если не пользоваться flexmojos, то вот такое стандартное убогое поведение компилятора не приводит к печальным последствиям - потому что без явного подключения библиотек будет включено только core properties.
А flexmojos линкует в external все зависимости текущего проекта - ведь property это не только строка, но ClassReference, Embed. То есть как бы может Adobe и думала при написании компилятора чуть-чуть и вставка core является валидным поведением (хотя зачем нам core, если модуль как resource part от app module) - но все равно это никак не есть нормально - потому что если вам будет нужен ClassReference, вам придется слинковаться - а в линкуемой библиотеке как раз и будут эти самые нам не нужные ResourceBundle metadata.

Причем такое поведение только для Application Builder - в Library Builder use-resource-bundle-metadata работает нормально (видимо, потому что запаковать текстовый файл в zip просто :)).

Такие баги из разряда "о них не пишут". Впрочем, Марвин уже послал Adobe с их ужасным compiler API, так что мы (Марвину не нужно особо runtime resource modules, так что придется патчить) решим эту проблему в следующих выпусках flexmojos, ну а пока что можно тупо (нормально запатчить не получится - фактически проще будет переписать) запатчить компилятор напрямую.
Previous post Next post
Up