27 fev 2011

Problema de compilação do ASDoc nos Flex Library Projects

Todos sabemos que com a vinda do Flash Builder 4 nós ganhamos o suporte a visualização do ASDoc, mas algo que deixou a desejar foi na criação de novas libs através do Flex Library Project pois não há como adicionar o conteúdo do ASDoc sem que haja a inclusão dos sources dentro da lib.

Essa situação não agrada muito quando o seu objetivo é distribuir uma biblioteca que tenha todo o suporte do ASDoc mas que não contenha os sources do seu projeto, visando manter a propriedade intelectual do que está sendo distribuído.

Reconhecido o erro, a Adobe liberou um Ant simples que você pode usar em seus Flex Library Projects.

O Ant faz as seguintes ações:
1. Compila o SWC.
2. Compila o ASDoc.
3. Adiciona ao SWC os novos xml/DITA gerados pelo ASDoc.

Entendido o problema, segue o Ant feito pela adobe com algumas modificações.
(Observem os comentários e não esqueça de substituir o CAMINHO_PARA_O_FLEXTASKS.JAR e o CAMINHO_PARA_A_SDK_DO_FLEX)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?xml version="1.0"?>
<project name="<b><font color="#CD252D">red</font><font color="#534B49">spark</font></b>" default="main" basedir=".">

    <!--
    Substituir o CAMINHO_PARA_O_FLEXTASKS.JAR com o caminho do flexTasks.jar, ex:
    C:Arquivos de programasAdobeAdobe Flash Builder 4 Plug-insdks4.1.0antlibflexTasks.jar
    -->
    <taskdef resource="flexTasks.tasks" classpath="CAMINHO_PARA_O_FLEXTASKS.JAR" />

    <!--
    Substituir o CAMINHO_PARA_A_SDK_DO_FLEX com o caminho da sdk do flex, ex:
    C:Arquivos de programasAdobeAdobe Flash Builder 4 Plug-insdks4.1.0
    -->
    <property name="FLEX_HOME" location="CAMINHO_PARA_A_SDK_DO_FLEX"/>

    <target name="main" depends="clean, compile, doc" description="Clean build of ExampleFatSWC.swc">
    </target>

    <target name="clean" depends="clean-temp-docs">
        <delete failonerror="false">
            <fileset dir="${basedir}/bin">
                <include name="${ant.project.name}.swc"/>
            </fileset>
        </delete>
    </target>

    <target name="compile" depends="" description="Compile SWC">

        <echo message="Compiling ${ant.project.name}.swc"/>

        <compc fork="true" output="${basedir}/bin/${ant.project.name}.swc">
            <source-path path-element="${basedir}/src"/>
            <include-sources dir="${basedir}/src" includes="**/*.as **/*.mxml"/>
        </compc>

    </target>

    <target name="doc" depends="clean-temp-docs, compile" description="Updates SWC with ASDoc XML">

        <echo message="Compiling ASDoc for ${ant.project.name}.swc"/>

        <!-- Chama a ASDocTool para gerar os arquivos dita/xml -->
        <asdoc output="${basedir}/tempDoc" lenient="true" failonerror="true" keep-xml="true" skip-xsl="true" fork="true">
            <compiler.source-path path-element="${basedir}/src"/>
            <doc-sources path-element="${basedir}/src"/>
        </asdoc>

        <!-- Atualiza o SWC com os xmls do ASDoc -->
        <zip destfile="${basedir}/bin/${ant.project.name}.swc" update="true">
            <zipfileset dir="${basedir}/tempDoc/tempdita" prefix="docs">
                <include name="*.*"/>
                <exclude name="ASDoc_Config.xml"/>
                <exclude name="overviews.xml"/>
            </zipfileset>
        </zip>
    </target>

    <target name="clean-temp-docs">
        <delete dir="${basedir}/tempDoc" failonerror="false" includeEmptyDirs="true"/>
    </target>

</project>

Agora que já entendemos o problema e já temos a solução, que tal automatizar o processo? Vamos adicionar o Ant no processo automático de compilação do projeto.

1. Adicione o ant dentro do path do seu projeto.

2. Acesse as propriedades do projeto e vá em Builders.

2. Clique no botão import e adicione o Ant file.

3. Desmarque a opção Flex.

Pronto, agora seu projeto Flex Library já está pronto para compilar o seu ASDoc sem comprometer o source dos seus arquivos.

Para baixa o ant clique aqui.

Leave a Comment