Как я могу заставить FlashBuilder использовать собственный префикс пространства имен - PullRequest
5 голосов
/ 23 июня 2011

У меня есть библиотека компонентов. У него есть файл манифеста, который выглядит следующим образом:

<?xml version="1.0"?>
<componentPackage>
    <component id="AutoComplete" class="be.edge.components.AutoComplete" />
    <!-- more components left out for brevity -->
</componentPackage>

Я компилирую библиотеку через FlashBuilder со следующими настройками компилятора:

FlashBuilder library compiler namespace inputs

Когда я использую скомпилированную библиотеку в других проектах FlashBuilder, все работает как положено. Я получаю завершение кода, и когда я выбираю предложение из дополнения кода, к пространству автоматически добавляется атрибут пространства имен, например:

<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009" 
        xmlns:s="library://ns.adobe.com/flex/spark" 
        xmlns:ns="library://ns.edge.be" >

    <ns:AutoComplete />

</s:Skin>

Но: FlashBuilder автоматически создает префикс «ns». Я хотел бы настроить это, например, на «е». Как я могу заставить FlashBuilder использовать этот пользовательский префикс по умолчанию?

У меня есть две причины для этого:

  1. 'ns' ничего не говорит: он просто говорит Использовано пространство имен , а не какое пространство имен.
  2. когда я использую другие библиотеки, которые также начинаются с URL-адреса, подобного 'library: // ns.' FlashBuilder, вероятно, начнет нумерацию префиксов для разрешения конфликта (ns, ns1, ns2 и т. Д.), Что еще более запутанно.

EDIT:

Я также передаю config.xml компилятору, который имеет следующие объявления, относящиеся к пространствам имен:

<compiler>
    <namespaces>
        <namespace>
            <uri>library://ns.edge.be</uri>
            <manifest>manifest.xml</manifest>
        </namespace>
    </namespaces>
</compiler>

<include-namespaces>
    <uri>library://ns.edge.be</uri>
</include-namespaces>

Ответы [ 2 ]

6 голосов
/ 23 июня 2011

Это используется для работы:

Создайте файл с именем design.xml в папке / src:

<?xml version="1.0" ?>
<design>
    <namespaces>
        <namespace prefix="mangos" uri="http://com.mangofactory.sample/mxml/2010" />
    </namespaces>
</design>

Создайте файл с именем manifest.xml вВаша папка / src:

<componentPackage>
        <component id="MyClass" class="com.mangofactory.framework.MyClassTag"/>
</componentPackage>

Настройте URL-адрес своего пространства имен и т. д. в свойствах сборки: enter image description here

Это предполагается , чтобы Flash Builder отображал какследует:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx"
               xmlns:mangos="http://com.mangofactory.sample/mxml/2010">
    <fx:Declarations>
        <mangos:MyClass />
    </fx:Declarations>
</s:Application>

(Обратите внимание, что класс отображается как MyClass вместо MyClassTag, а пространство имен отображается как mangos)

Однако я только что попытался сделать это,и хотя класс был переименован правильно, пространство имен появилось как ns.Я знаю, что раньше это работало в FB3.x, возможно, я либо забыл шаг, либо FB4.5 сломал его.

0 голосов
/ 23 июня 2011

Если вы просто измените xmlns:ns на xmlns:e или xmlns:foo, то анализатор MXML примет изменение.Это не так сложно изменить, и я не думаю, что есть способ изменить способ генерации пространств имен по умолчанию.

...