Можно ли объединить два файла SWC в один?

В настоящее время я пытаюсь сделать столь необходимую очистку в одном из наших проектов, и в рамках этого я разбиваю большой двоичный объект SWC на ​​несколько более мелких. Все идет нормально.

Теперь проблема заключается в том, что из-за устаревших целей мне все еще нужен единый совокупный SWC, включающий все источники, которые теперь разделены между специализированными SWC. Возможно ли это без повторной компиляции исходников? Можно ли объединить два или более SWC в один SWC?

В долгосрочной перспективе зависимости от этого единственного SWC будут заменены зависимостями только от тех новых SWC, которые действительно необходимы. Но на переходном этапе мне нужно поддерживать оба случая. :/


ОБНОВИТЬ:

Мы управляем нашими проектами с помощью Maven, поэтому я искал решение, которое работает с используемым плагином flexmojos maven. Как отметил Брайан, compc можно использовать для объединения нескольких SWC, но, похоже, нет точного эквивалента, который можно было бы использовать в файле pom.

Flexmojos docs обратите внимание, что при указании зависимостей можно использовать флаг <scope>. с тем же эффектом. Но это приводит к ошибкам компиляции, поскольку он пытается рекурсивно объединить все ссылки (и я хочу объединить только указанные библиотеки, а не те, от которых они, в свою очередь, зависят). Итак, это не работает.

Другим возможным решением, которое я исследовал, была опция конфигурации <include-libraries>, как видно из файла ...-config.xml, который создается вместе с окончательным SWC. Используя следующий синтаксис:

  <include-libraries>
     <library>string</library>
  </include-libraries>

Однако, похоже, это вообще не поддерживается. :/

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


person Teodor Jakobsson    schedule 14.08.2014    source источник
comment
Насколько я помню, нам нужно что-то подобное при компиляции flex-приложений для инструментовки (тестов пользовательского интерфейса). Здесь мы определяем обычную зависимость и устанавливаем внутреннюю область (docs.sonatype .org/display/FLEXMOJOS/)   -  person Christofer Dutz    schedule 23.09.2014


Ответы (2)


Да, это возможно. Из https://code.google.com/p/apparat/issues/detail?id=51 есть пример. Это так же просто, как сделать следующее

   compc -compiler.include-libraries=special1.swc,special2.swc -o aggregate.swc
person Brian    schedule 14.08.2014
comment
Спасибо! Теперь, если я могу понять, как это сделать, используя maven и flexmojos. - person Teodor Jakobsson; 15.08.2014

Итак, если у вас есть библиотека с этой зависимостью:

<dependency>
    <groupId>my.lib.gid</groupId>
    <artifactId>my.lib.gid</artifactId>
    <version>1.2.3</version>
    <type>swc</type>
    <scope>internal</scope>
</dependency>

«Внутренняя» область должна привести к тому, что вы ищете. Я почти уверен, что эта функция уже существовала во Flexmojos 4.2 (даже если она очень, очень старая).

person Christofer Dutz    schedule 23.09.2014
comment
Спасибо за ответ, но, как отмечено в разделе обновления (параграф 2), это не сработает, поскольку внутренняя область пытается рекурсивно включать библиотеки, на которые, в свою очередь, опираются файлы swc, которые я пытаюсь объединить. :/ - person Teodor Jakobsson; 24.09.2014
comment
Ну, я только что просмотрел исходники, на самом деле scope=internal — это то, что вы ищете, поскольку getIncludeLibraries в AbstractFlexCompilerMojo точно выбирает внутренние зависимости. Но я должен признать, что не могу полностью подтвердить включение транзитивных зависимостей. Хотя посмотрю. Возможно, добавление теста в набор тестов поможет. - person Christofer Dutz; 24.09.2014