Antを使用してFlex 4プロジェクトをコンパイルしようとしています。私はメインのアプリケーションをコンパイルすることができ、私はいくつかのモジュールをうまくコンパイルできます。サブパッケージに依存しているモジュールは、Error: Type was not found or was not a compile-time constant
というエラーが発生しています。私はFlash Builder 4を使用してWindows上ですべての開発を行います。すべてをコンパイルすることができますが、コンパイルをヘッドレスLinuxベースのサーバー(Antが入っている場所)に移動するだけです。Antを使用したFlexモジュールのコンパイル
私は私の問題をテストするための簡単なプロジェクトを作成しました:
src-> Main.mxml
|->modules
|-> module1-> Module1.mxml
|-> module2-> Module2.mxml
|-> subPackage-> SubClass.as
Module1がモジュール2は、サブクラスのインスタンスを持っては授業他、その後のFlexフレームワーククラスを使用していません。メインアプリケーションのコンパイルは正常に動作し、Module1も正常に動作します。 Module2をコンパイルしようとすると、エラーError: Type was not found or was not a compile-time constant: SubClass.
が出ます。
私の完全なAntスクリプトは次のとおりです。
<project name="Test" basedir=".">
<property file="build.properties" />
<target name="properties">
<fail unless="mxmlc">The "mxmlc" property must be set in build.properties.</fail>
</target>
<target name="build-app" depends="properties">
<exec executable="${mxmlc}" dir="${src.dir}" failonerror="true">
<!-- Point to the mxml file -->
<arg line="${app.name}.mxml" />
<!-- Don\t generate debug swf -->
<arg line="-debug=false" />
<!-- Generate optimized swf -->
<arg line="-optimize=true" />
<!-- Don't build incrementally -->
<arg line="-incremental=false" />
<!-- Place the built .swf file in the "bin" directory -->
<arg line="-output '${build.dir}/${app.name}.swf'" />
<!--
Create a linker report that lists all the classes already in the main app
This gets passed to the modules so that they don't load up the shared libs again.
-->
<arg line="-link-report='${temp.dir}/link-report.xml'"/>
</exec>
</target>
<target name="build-modules" description="Build Modules">
<build.module dir="${module.dir}/module1" file="Module1"/>
<build.module dir="${module.dir}/module2" file="Module2"/>
</target>
<macrodef name="build.module">
<attribute name="dir" />
<attribute name="file" />
<sequential>
<echo>@{file}</echo>
<exec executable="${mxmlc}" dir="${src.dir}" failonerror="true">
<!-- Point to the mxml file -->
<arg line="'@{dir}/@{file}.mxml'" />
<!-- Don't generate debug swf -->
<arg line="-debug=false" />
<!-- Generate optimized swf -->
<arg line="-optimize=true" />
<!-- Don't build incrementally -->
<arg line="-incremental=false" />
<!-- Place the built .swf file in the "bin" directory -->
<arg line="-output '${module.build.dir}/@{file}.swf'" />
<!-- Exclude all classes that are already in the main application -->
<arg line="-load-externs='${temp.dir}/link-report.xml'"/>
</exec>
</sequential>
</macrodef>
私はこれが動作しない理由として完全な損失でね。
おかげで、
--Ryan
「サブパッケージ」とはどういう意味ですか?これらのクラスは、同じベースソースディレクトリにあるのでしょうか、それとも別のクラスになっていますか? –
srcディレクトリには、 "module1"と "module2"という2つのディレクトリがあるという点で "modules"という1つのディレクトリがあります。 "module2"には "SubClass.as"クラスを含む "subPackage"というディレクトリがあります。言い換えれば、問題の3つのクラスは次のとおりです:modules.module1.Module1; modules.module2.Module2; modules.module2.subPackage.SubClass。 – Ryan