8 Stimmen

Wie kann ich die Erstellung einer Flex-Komponentenbibliothek automatisieren?

Ich würde gerne ein Flex-Bibliotheks-Projekt automatisch erstellen, anstatt wie bisher einen unserer Entwickler zu beauftragen, es auf seinem Rechner zu kompilieren und dann die resultierende .swc-Datei einzuchecken. Das ist krass.

Ich komme aus der Perspektive eines Java-Entwicklers, so dass es mir schwer fällt, die Kompilierungswerkzeuge in der Flex Builder 3-Anwendung zu verstehen, aber hier ist, was ich bereits habe:

  1. Ich habe eine Ameisendatei erstellt, die die Ameisenaufgabenbibliothek korrekt lädt und daher Folgendes ausführen kann <mxmlc/> y <compc/> Aufgaben.
  2. Ich habe den Quellcode gefunden, den ich zum Erstellen benötige, und weiß, welche Art von .swc ich am Ende haben möchte.

Ich möchte ein Ameisenskript, das die gleichen Schritte ausführt wie diese:

  1. Wir erstellen alle Quellen (Actionscript und MXML) und Assets im Projekt in einer swc-Datei.
  2. Die Datei library.swf wird extrahiert und optimiert

Bis jetzt habe ich dies:

<target name="compile-component" depends="init">
  <compc output="${DEPLOY_DIR}/${SWC_NAME}.swc">
    <source-path path-element="${FLEX_HOME}/frameworks"/>
    <source-path path-element="${SRC_DIR}"/>
  </compc>
</target>

Sie enthält jedoch keine Inhalte:

[compc] Loading configuration file /Applications/Adobe Flex Builder 3/sdks/3.2.0/frameworks/flex-config.xml
[compc] Adobe Compc (Flex Component Compiler)
[compc] Version 3.2.0 build 3958
[compc] Copyright (c) 2004-2007 Adobe Systems, Inc. All rights reserved.
[compc] 
[compc] Error: nothing was specified to be included in the library
[compc] 
[compc] Use 'compc -help' for information about using the command line.

Es sieht so aus, als müsste ich jede Klasse aufzählen, die ich in die Bibliothek aufnehmen möchte, was... lächerlich ist. Es muss einen besseren Weg geben. Wie kann ich dies tun?

12voto

Gregor Kiddie Punkte 3119

Sie können Folgendes tun... es nimmt alle Dateien aus dem Quellpfad und konvertiert sie in ein Format, das die compc-Aufgabe dann verwenden kann.

<fileset id="project.test.dir.fileset" dir="${project.test.dir}">
    <include name="**/*.as" />
    <include name="**/*.mxml" />
</fileset>
<property name="project.test.dir.fileset" refid="project.test.dir.fileset" />

<!-- Convert the test files into a compiler friendly format. -->
<pathconvert property="project.test.dir.path" pathsep=" " refid="project.test.dir.fileset">
    <compositemapper>
        <chainedmapper>
            <globmapper from="${project.test.dir}/*" to="*" handledirsep="true" />
            <mapper type="package" from="*.as" to="*" />
        </chainedmapper>
        <chainedmapper>
            <globmapper from="${project.test.dir}/*" to="*" handledirsep="true" />
            <mapper type="package" from="*.mxml" to="*" />
        </chainedmapper>
    </compositemapper>
</pathconvert>

<compc headless-server="true" default-frame-rate="${flex.default-frame-rate}" debug="${flex.compiler.debug.mode}" output="${build.swc.dir}/${test.component.name}.swc" include-classes="${project.test.dir.path}" directory="false">
    <source-path path-element="${project.test.dir}" />
    &dependencies;
</compc>

Wir verwenden es zur Erstellung von Swcs für Testzwecke.

10voto

Rick Herrick Punkte 101

Zum Glück für Sie habe ich gerade dieses Problem gelöst und war auf der Suche nach der Antwort auf ein anderes Problem!

    <compc output="${basedir}/mySwc.swc" locale="en_US">
        <source-path path-element="${basedir}/src/main/flex"/>
        <include-sources dir="${basedir}/src/main/flex" includes="*" />
        <load-config filename="${basedir}/fb3config.xml" />
    </compc>

Der Quellpfad ist notwendig, um dem Programm mitzuteilen, worauf es bei der Auflösung der verschiedenen Verweise achten soll. Mit include-sources wird angegeben, welche Quellen einbezogen werden sollen (in diesem Fall natürlich alle). Die load-config ist einfach die -dump-config-Ausgabe von Flex Builder.

Hoffentlich hilft das!!

1voto

Andrew Aylett Punkte 37790

Sie können verwenden Maven . Es ist ein Konfigurationsmanagement-Tool und nicht nur ein Build-Tool. Es ist darauf angewiesen, dass Ihr Projekt eine Manifestdatei hat.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X