我们有一台 linux 机器 (Red Hat) 来编译我们的 flex (3.0) 应用程序。这是一个 ant 任务(由 maven-antrun-plugin 调用)。
我们决定改变我们的构建机器(同样的 Red Hat)。
所以我在新机器上复制/粘贴 FLEX_HOME 目录(从旧机器上),安装 ant 然后在新机器上签出项目。
这是我打电话时的日志:ant -buildfile build-flex.xml
构建文件:build-flex.xml
版本:
[echo] 版本 ${maven.pom.version}
[copy] 复制 1 个文件到 /home/ad59aphr/build/pharerh-ihm/flex_resourcescompile.release:
[mxmlc] 加载配置文件 /exec/products/flex_sdk/frameworks/flex-config.xml
[mxmlc] /home/ad59aphr/build/pharerh-ihm/flex_src/flexClient_381495.cache (没有这样的>文件或目录)
大多数情况下,它使用 100% cpu 的 java 挂起。有时它会显示编译中的一些警告,但不要进一步。
当我使用 ant -debug -buildfile build-flex.xml 时,它显示了执行的命令:
[mxmlc] FlexTask.execute:-compiler.keep-generated-actionscript=true -compiler.incremental=true +flexlib=/exec/products/flex_sdk/frameworks -compiler.services=/home/ad59aphr/build/pharerh-ihm/ WebContent/WEB-INF/flex/services-config.xml -metadata.description=PhareRH -metadata.title=PhareRH -compiler.accessible=true -compiler.optimize=true -compiler.strict=true -compiler.headless-server= true -load-config=/exec/products/flex_sdk/frameworks/flex-config.xml -compiler.source-path=/exec/products/flex_sdk/frameworks -compiler.source-path=/home/ad59aphr/build/pharerh -ihm/flex_resources -compiler.source-path=/home/ad59aphr/build/pharerh-ihm/flex_src -compiler.source-path=/home/ad59aphr/build/pharerh-ihm/flex_src_gen -compiler.context-root=/ -compiler.debug=false -compiler.include-libraries+=/home/ad59aphr/build/pharerh-ihm/flex_libs/Cairngorm.swc -compiler。include-libraries+=/home/ad59aphr/build/pharerh-ihm/flex_libs/Collator.swc -compiler.include-libraries+=/home/ad59aphr/build/pharerh-ihm/flex_libs/automation.swc -compiler.include-libraries+= /home/ad59aphr/build/pharerh-ihm/flex_libs/automation_agent.swc -compiler.include-libraries+=/home/ad59aphr/build/pharerh-ihm/flex_libs/automation_dmv.swc -compiler.include-libraries+=/home/ad59aphr /build/pharerh-ihm/flex_libs/qtp.swc -- /home/ad59aphr/build/pharerh-ihm/flex_src/flexClient.mxml包含库+=/home/ad59aphr/build/pharerh-ihm/flex_libs/qtp.swc -- /home/ad59aphr/build/pharerh-ihm/flex_src/flexClient.mxml包含库+=/home/ad59aphr/build/pharerh-ihm/flex_libs/qtp.swc -- /home/ad59aphr/build/pharerh-ihm/flex_src/flexClient.mxml
关于调试输出,我看不出工作机器(旧机器)和这台新机器之间有任何区别。
我试图将旧的 .cache 文件复制到新机器(+更改数字),它给了我:
compile.release:
[mxmlc] 加载配置文件 /exec/products/flex_sdk/frameworks/flex-config.xml
[mxmlc] 编译目标与 /home/ad59aphr/build/pharerh-ihm/flex_src/flexClient_381495.cache 匹配失败. 缓存文件不会被重复使用。
我试图在 build-flex.xml 中将 -incremental 更改为 false,但结果相同:卡住了。
我尝试在 root 中编译以避免任何权限问题,结果相同。
我的 build-flex.xml :
<?xml version="1.0" encoding="UTF-8"?>
<!-- $HeadURL: http://svnserver.mdp/pharerh/branches/G1R3/developpement/pharerh-ihm/build-flex.xml $ -->
<!-- WARNING: Eclipse auto-generated file.
Any modifications will be overwritten.
To include a user specific buildfile here, simply create one in the same
directory with the processing instruction <?eclipse.ant.import?>
as the first entry and export the buildfile again. -->
<project basedir="." default="release" name="iah-admin-ui">
<property environment="env" />
<property name="WebApp.location" value="${env.TOMCAT_HOME}/webapps/pharerh-ihm" />
<property name="flexClient.location" value="${basedir}" />
<property name="FLEX_HOME" value="${env.FLEX_HOME}" />
<property name="FDS_CONFIG_FILE" value="${env.FLEX_HOME}/frameworks/flex-config.xml" />
<property name="webcontent_location" value="${flexClient.location}/WebContent" />
<property name="FDS_SERVICES_CONFIG_FILE" value="${flexClient.location}/WebContent/WEB-INF/flex/services-config.xml" />
<taskdef resource="flexTasks.tasks" classpath="${env.FLEX_HOME}/ant/lib/flexTasks.jar" />
<target name="version">
<echo message="Version ${maven.pom.version}" />
<copy file="${flexClient.location}/flex_templates/version.properties" toDir="${flexClient.location}/flex_resources/" overwrite="true">
<filterset>
<filter token="generated" value="# ATTENTION : Ce fichier est le resultat d'une generation automatique. Ne pas editer." />
<filter token="version" value="${maven.pom.version}" />
</filterset>
</copy>
</target>
<target name="compile.release" depends="version">
<mxmlc file="${flexClient.location}/flex_src/flexClient.mxml" keep-generated-actionscript="true" incremental="true" services="${FDS_SERVICES_CONFIG_FILE}" >
<accessible>true</accessible>
<optimize>true</optimize>
<strict>true</strict>
<headless-server>true</headless-server>
<load-config filename="${FDS_CONFIG_FILE}" />
<source-path path-element="${env.FLEX_HOME}/frameworks" />
<source-path path-element="${flexClient.location}/flex_resources" />
<source-path path-element="${flexClient.location}/flex_src" />
<source-path path-element="${flexClient.location}/flex_src_gen" />
<compiler.include-libraries dir="${flexClient.location}/flex_libs" append="true" >
<include name="*.swc" />
</compiler.include-libraries>
<compiler.context-root>/</compiler.context-root>
<debug>false</debug>
<metadata description="PhareRH" title="PhareRH" />
</mxmlc>
</target>
<target name="flex.wrapper">
<html-wrapper
title="Bienvenue sur l'application Phare-rh"
height="100%"
width="100%"
bgcolor="#869ca7"
output="${webcontent_location}"
swf="flexClient"
template="express-installation"
history="false"
application="flexClient"
file="flexClient.html"
/>
<!-- Ajout des balises pour la gestion du cache dans le fichier html. -->
<replace file="${webcontent_location}/flexClient.html">
<replacetoken><![CDATA[<head>]]></replacetoken>
<replacevalue><![CDATA[<head>
<!-- Gestion du cache -->
<meta http-equiv="expires" content="0" />
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="cache-control" content="no-cache, must-revalidate, max-age=0" />
<meta http-equiv="Cache" Content="no store" />
<meta http-equiv="last-modified" content="" />
]]></replacevalue>
</replace>
</target>
<target name="compile.debug" depends="version">
<mxmlc file="flex_src/flexClient.mxml" keep-generated-actionscript="false" services="${FDS_SERVICES_CONFIG_FILE}">
<accessible>false</accessible>
<optimize>false</optimize>
<strict>true</strict>
<load-config filename="${FDS_CONFIG_FILE}" />
<source-path path-element="${env.FLEX_HOME}/frameworks" />
<compiler.include-libraries dir="flex_libs" append="true">
<include name="*.swc" />
</compiler.include-libraries>
<debug>true</debug>
<metadata description="PhareRH" title="PhareRH">
</metadata>
</mxmlc>
</target>
<target name="release" depends="compile.release">
<move file="flex_src/flexClient.swf" todir="${webcontent_location}" overwrite="true" />
</target>
<target name="packaging" depends="compile.release, flex.wrapper">
<move file="flex_src/flexClient.swf" todir="${webcontent_location}" overwrite="true" />
</target>
<target name="release-debug" depends="compile.debug">
<move file="${APP_ROOT}/flex_src/flexClient.swf" todir="release" overwrite="true" />
</target>
<target name="release-no-compile">
<echo message="WebAppLocation : ${WebApp.location}"/>
<copy file="bin-debug/flexClient.swf" todir="${WebApp.location}" overwrite="true" />
</target>
<target name="properties-encoding">
<exec command="native2ascii -encoding ISO8859_1 flex_resources/election.properties election.properties.ISO8859_1">
</exec>
<move file="election.properties.ISO8859_1" tofile="flex_resources/election.properties" overwrite="true" />
<exec command="native2ascii -encoding ISO8859_1 flex_resources/phareRH.properties phareRH.properties.ISO8859_1">
</exec>
<move file="phareRH.properties.ISO8859_1" tofile="flex_resources/phareRH.properties" overwrite="true" />
<exec command="native2ascii -encoding ISO8859_1 flex_resources/erreurs.properties erreurs.properties.ISO8859_1">
</exec>
<move file="erreurs.properties.ISO8859_1" tofile="flex_resources/erreurs.properties" overwrite="true" />
<exec command="native2ascii -encoding ISO8859_1 flex_resources/veillesociale.properties veillesociale.properties.ISO8859_1">
</exec>
<move file="veillesociale.properties.ISO8859_1" tofile="flex_resources/veillesociale.properties" overwrite="true" />
<exec command="native2ascii -encoding ISO8859_1 flex_resources/rup.properties rup.properties.ISO8859_1">
</exec>
<move file="rup.properties.ISO8859_1" tofile="flex_resources/rup.properties" overwrite="true" />
<exec command="native2ascii -encoding ISO8859_1 flex_resources/administration.properties administration.properties.ISO8859_1">
</exec>
<move file="administration.properties.ISO8859_1" tofile="flex_resources/administration.properties" overwrite="true" />
</target>
</project>
我的 flex-config.xml
<?xml version="1.0"?>
<!--
ADOBE SYSTEMS INCORPORATED
Copyright 2005-2007 Adobe Systems Incorporated
All Rights Reserved.
NOTICE: Adobe permits you to use, modify, and distribute this file
in accordance with the terms of the license agreement accompanying it.
-->
<flex-config>
<compiler>
<!-- Turn on generation of accessible SWFs. -->
<accessible>false</accessible>
<!-- Specifies the locales for internationalization. -->
<locale>
<locale-element>en_US</locale-element>
</locale>
<!-- List of path elements that form the roots of ActionScript class hierarchies. -->
<!-- not set -->
<!--
<source-path>
<path-element>string</path-element>
</source-path>
-->
<!-- Allow the source-path to have path-elements which contain other path-elements -->
<allow-source-path-overlap>false</allow-source-path-overlap>
<!-- Run the AS3 compiler in a mode that detects legal but potentially incorrect -->
<!-- code. -->
<show-actionscript-warnings>true</show-actionscript-warnings>
<!-- Turn on generation of debuggable SWFs. False by default for mxmlc, -->
<!-- but true by default for compc. -->
<!--
<debug>true</debug>
-->
<!-- List of SWC files or directories to compile against but to omit from -->
<!-- linking. -->
<external-library-path>
<path-element>libs/player/playerglobal.swc</path-element>
</external-library-path>
<!-- Turn on writing of generated/*.as files to disk. These files are generated by -->
<!-- the compiler during mxml translation and are helpful with understanding and -->
<!-- debugging Flex applications. -->
<keep-generated-actionscript>false</keep-generated-actionscript>
<!-- not set -->
<!--
<include-libraries>
<library>string</library>
</include-libraries>
-->
<!-- List of SWC files or directories that contain SWC files. -->
<library-path>
<path-element>libs</path-element>
<path-element>libs/player</path-element>
<path-element>locale/{locale}</path-element>
</library-path>
<namespaces>
<!-- Specify a URI to associate with a manifest of components for use as MXML -->
<!-- elements. -->
<namespace>
<uri>http://www.adobe.com/2006/mxml</uri>
<manifest>mxml-manifest.xml</manifest>
</namespace>
</namespaces>
<!-- Enable post-link SWF optimization. -->
<optimize>true</optimize>
<!-- Keep the following AS3 metadata in the bytecodes. -->
<!-- Warning: For the data binding feature in the Flex framework to work properly, -->
<!-- the following metadata must be kept: -->
<!-- 1. Bindable -->
<!-- 2. Managed -->
<!-- 3. ChangeEvent -->
<!-- 4. NonCommittingChangeEvent -->
<!-- 5. Transient -->
<!--
<keep-as3-metadata>
<name>Bindable</name>
<name>Managed</name>
<name>ChangeEvent</name>
<name>NonCommittingChangeEvent</name>
<name>Transient</name>
</keep-as3-metadata>
-->
<!-- Turn on reporting of data binding warnings. For example: Warning: Data binding -->
<!-- will not be able to detect assignments to "foo". -->
<show-binding-warnings>true</show-binding-warnings>
<!-- toggle whether warnings generated from unused type selectors are displayed -->
<show-unused-type-selector-warnings>true</show-unused-type-selector-warnings>
<!-- Run the AS3 compiler in strict error checking mode. -->
<strict>true</strict>
<!-- Use the ActionScript 3 class based object model for greater performance and better error reporting. -->
<!-- In the class based object model most built-in functions are implemented as fixed methods of classes -->
<!-- (-strict is recommended, but not required, for earlier errors) -->
<as3>true</as3>
<!-- Use the ECMAScript edition 3 prototype based object model to allow dynamic overriding of prototype -->
<!-- properties. In the prototype based object model built-in functions are implemented as dynamic -->
<!-- properties of prototype objects (-strict is allowed, but may result in compiler errors for -->
<!-- references to dynamic properties) -->
<es>false</es>
<!-- List of CSS or SWC files to apply as a theme. -->
<!-- not set -->
<!--
<theme>
<filename>string</filename>
<filename>string</filename>
</theme>
-->
<!-- Turns on the display of stack traces for uncaught runtime errors. -->
<verbose-stacktraces>false</verbose-stacktraces>
<!-- Defines the AS3 file encoding. -->
<!-- not set -->
<!--
<actionscript-file-encoding></actionscript-file-encoding>
-->
<fonts>
<!-- Enables advanced anti-aliasing for embedded fonts, which provides greater clarity for small -->
<!-- fonts. This setting can be overriden in CSS for specific fonts. -->
<!-- NOTE: flash-type has been deprecated. Please use advanced-anti-aliasing <flash-type>true</flash-type> -->
<advanced-anti-aliasing>true</advanced-anti-aliasing>
<!-- The number of embedded font faces that are cached. -->
<max-cached-fonts>20</max-cached-fonts>
<!-- The number of character glyph outlines to cache for each font face. -->
<max-glyphs-per-face>1000</max-glyphs-per-face>
<!-- Defines ranges that can be used across multiple font-face declarations. -->
<!-- See flash-unicode-table.xml for more examples. -->
<!-- not set -->
<!--
<languages>
<language-range>
<lang>englishRange</lang>
<range>U+0020-U+007E</range>
</language-range>
</languages>
-->
<!-- Compiler font manager classes, in policy resolution order-->
<managers>
<manager-class>flash.fonts.JREFontManager</manager-class>
<manager-class>flash.fonts.AFEFontManager</manager-class>
<manager-class>flash.fonts.BatikFontManager</manager-class>
</managers>
<!-- File containing cached system font licensing information produced via
java -cp mxmlc.jar flex2.tools.FontSnapshot (fontpath)
Will default to winFonts.ser on Windows XP and
macFonts.ser on Mac OS X, so is commented out by default.
<local-fonts-snapshot>localFonts.ser</local-fonts-snapshot>
-->
</fonts>
<!-- Array.toString() format has changed. -->
<warn-array-tostring-changes>false</warn-array-tostring-changes>
<!-- Assignment within conditional. -->
<warn-assignment-within-conditional>true</warn-assignment-within-conditional>
<!-- Possibly invalid Array cast operation. -->
<warn-bad-array-cast>true</warn-bad-array-cast>
<!-- Non-Boolean value used where a Boolean value was expected. -->
<warn-bad-bool-assignment>true</warn-bad-bool-assignment>
<!-- Invalid Date cast operation. -->
<warn-bad-date-cast>true</warn-bad-date-cast>
<!-- Unknown method. -->
<warn-bad-es3-type-method>true</warn-bad-es3-type-method>
<!-- Unknown property. -->
<warn-bad-es3-type-prop>true</warn-bad-es3-type-prop>
<!-- Illogical comparison with NaN. Any comparison operation involving NaN will evaluate to false because NaN != NaN. -->
<warn-bad-nan-comparison>true</warn-bad-nan-comparison>
<!-- Impossible assignment to null. -->
<warn-bad-null-assignment>true</warn-bad-null-assignment>
<!-- Illogical comparison with null. -->
<warn-bad-null-comparison>true</warn-bad-null-comparison>
<!-- Illogical comparison with undefined. Only untyped variables (or variables of type *) can be undefined. -->
<warn-bad-undefined-comparison>true</warn-bad-undefined-comparison>
<!-- Boolean() with no arguments returns false in ActionScript 3.0. Boolean() returned undefined in ActionScript 2.0. -->
<warn-boolean-constructor-with-no-args>false</warn-boolean-constructor-with-no-args>
<!-- __resolve is no longer supported. -->
<warn-changes-in-resolve>false</warn-changes-in-resolve>
<!-- Class is sealed. It cannot have members added to it dynamically. -->
<warn-class-is-sealed>true</warn-class-is-sealed>
<!-- Constant not initialized. -->
<warn-const-not-initialized>true</warn-const-not-initialized>
<!-- Function used in new expression returns a value. Result will be what the -->
<!-- function returns, rather than a new instance of that function. -->
<warn-constructor-returns-value>false</warn-constructor-returns-value>
<!-- EventHandler was not added as a listener. -->
<warn-deprecated-event-handler-error>false</warn-deprecated-event-handler-error>
<!-- Unsupported ActionScript 2.0 function. -->
<warn-deprecated-function-error>true</warn-deprecated-function-error>
<!-- Unsupported ActionScript 2.0 property. -->
<warn-deprecated-property-error>true</warn-deprecated-property-error>
<!-- More than one argument by the same name. -->
<warn-duplicate-argument-names>true</warn-duplicate-argument-names>
<!-- Duplicate variable definition -->
<warn-duplicate-variable-def>true</warn-duplicate-variable-def>
<!-- ActionScript 3.0 iterates over an object's properties within a "for x in target" statement in random order. -->
<warn-for-var-in-changes>false</warn-for-var-in-changes>
<!-- Importing a package by the same name as the current class will hide that class identifier in this scope. -->
<warn-import-hides-class>true</warn-import-hides-class>
<!-- Use of the instanceof operator. -->
<warn-instance-of-changes>true</warn-instance-of-changes>
<!-- Internal error in compiler. -->
<warn-internal-error>true</warn-internal-error>
<!-- _level is no longer supported. For more information, see the flash.display package. -->
<warn-level-not-supported>true</warn-level-not-supported>
<!-- Missing namespace declaration (e.g. variable is not defined to be public, private, etc.). -->
<warn-missing-namespace-decl>true</warn-missing-namespace-decl>
<!-- Negative value will become a large positive value when assigned to a uint data type. -->
<warn-negative-uint-literal>true</warn-negative-uint-literal>
<!-- Missing constructor. -->
<warn-no-constructor>false</warn-no-constructor>
<!-- The super() statement was not called within the constructor. -->
<warn-no-explicit-super-call-in-constructor>false</warn-no-explicit-super-call-in-constructor>
<!-- Missing type declaration. -->
<warn-no-type-decl>true</warn-no-type-decl>
<!-- In ActionScript 3.0, white space is ignored and '' returns 0. Number() returns -->
<!-- NaN in ActionScript 2.0 when the parameter is '' or contains white space. -->
<warn-number-from-string-changes>false</warn-number-from-string-changes>
<!-- Change in scoping for the this keyword. Class methods extracted from an -->
<!-- instance of a class will always resolve this back to that instance. In -->
<!-- ActionScript 2.0 this is looked up dynamically based on where the method -->
<!-- is invoked from. -->
<warn-scoping-change-in-this>false</warn-scoping-change-in-this>
<!-- Inefficient use of += on a TextField.-->
<warn-slow-text-field-addition>true</warn-slow-text-field-addition>
<!-- Possible missing parentheses. -->
<warn-unlikely-function-value>true</warn-unlikely-function-value>
<!-- Possible usage of the ActionScript 2.0 XML class. -->
<warn-xml-class-has-changed>false</warn-xml-class-has-changed>
</compiler>
<!-- compute-digest: writes a digest to the catalog.xml of a library. Use this when the library will be used as a
cross-domain rsl.-->
<!-- compute-digest usage:
<compute-digest>boolean</compute-digest>
-->
<!-- A list of runtime shared library URLs to be loaded before applications start. -->
<!-- not set -->
<!--
<runtime-shared-libraries>
<url>string</url>
<url>string</url>
</runtime-shared-libraries>
-->
<!-- runtime-shared-library-path: specifies a SWC or directory to link against and an RSL URL to load with optional failover URLs -->
<runtime-shared-library-path>
<path-element>libs/framework.swc</path-element>
<rsl-url>framework_3.0.0.477.swz</rsl-url>
<policy-file-url></policy-file-url>
<rsl-url>framework_3.0.0.477.swf</rsl-url>
<policy-file-url></policy-file-url>
</runtime-shared-library-path>
<!-- static-link-runtime-shared-libraries: statically link the libraries specified by the -runtime-shared-libraries-path option.-->
<static-link-runtime-shared-libraries>true</static-link-runtime-shared-libraries>
<!-- target-player: specifies the version of the player the application is targeting.
Features requiring a later version will not be compiled into the application.
The minimum value supported is "9.0.0".-->
<!-- target-player usage:
<target-player>version</target-player>
-->
<!-- Enables SWFs to access the network. -->
<use-network>true</use-network>
<!-- Metadata added to SWFs via the SWF Metadata tag. -->
<metadata>
<title>Adobe Flex 3 Application</title>
<description>http://www.adobe.com/products/flex</description>
<publisher>unknown</publisher>
<creator>unknown</creator>
<language>EN</language>
</metadata>
<!-- licenses: specifies a list of product and serial number pairs. -->
<!-- not set -->
<licenses>
<license>
<product>flexbuilder3</product>
<serial-number>XXXXXXXXXXXXXXXXX</serial-number>
</license>
</licenses>
</flex-config>