Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 8 Next »

Deploying Flex FDKs was allways a job involving a lot of work. Normally Velo was responsible for deploying new FDKs using some tools and configurations that he didn't make open-source. Unfortunately in 2011 Adobe released allmost all FDKs in patched versions in order to eliminate some major security issues. Only a hand-full of these FDKs were ever deployed again and the repo was completely missing working versions of 4.6 and Apaches 4.8 FDKs.

In order to get around the problem of having to wait for Velo to re-deploy all of the FDKs, I created a Tool that allows to automatically manvenize any give Flex / Air SDK. This tool is even able to generate Apache FDKs. While I was at it, I took the chance to refactor the structure of the FDKs so flash, air, flex are now handed separately as well as fixing some general issues I was having with the old structure:

  • The Flash Player and the Playerglobal are now separately deployed under the groupId "com.adobe.flash.framework".
  • The Air Runtime and Airglobal are now separately deployed under the groupId "com.adobe.air".
  • The libraries which are also available as RSLs and SWZs are deployed using their real Versions (Now the SWZ Files can be downloaded from the official Adobe servers).
  • Additional poms are generated, that contain only a dependencyManagement section and allow automatically configuring the versions of the framework artifacts.
  • All Themes are provided as SWC themes (Usually there were some SWC themes and some provided as non-compiled resources).
  • Adobe FDKs are deployed under the groupId "org.apache.flex".

In the next days I will contribute the Generator to the Apache foundation as I think it belongs to the FDKs more than it does to Flexmojos. Untill it is available from there I will host the Generator at Flexmojos.

These changes made it necessary to refactor Flexmojos code as well as the poms of the testsuite. Flexmojos 5 will not be 100% compatable with the new FDKs and the testsuite will fail. Possibly Flexmojos 5 could still work with FDKs that haven't been patched (4.6) ot the new Apache FDK 4.8 if generated to "com.adobe.flex" instead of "org.apache.flex". This is the main reason for me creating the Flexmojos 6.x branch.

Using the dependencyManagement poms

The major difference to the classic FDKs is that Libraries are now addressed using ther natural version. For example the textLayout and osmf packages were ususally deployed using the same version as the FDK they were distributed as. This caused major problems when configuring the application to load the corresponding SWZ files from adobe servers. Deploying them in their real versions makes this possible again. Unfortunately this makes configuring the dependencies a lot harder as you have to know which explicit version of a library is contained in each FDK version. To make this easier a few new pom artifacs were added. These contain a dependencyManagement section which define the versions of artifacts based upon the versions in the FDK. With FM6 the way to define your dependencies is to omit the version of a flex artifact and import the version information from that dependencyManagement pom:

<dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>com.adobe.flex</groupId>
			<artifactId>framework</artifactId>
			<version>${flex.version}</version>
			<type>pom</type>
			<scope>import</scope>
		</dependency>
	</dependencies>
</dependencyManagement>

Issues with the groupIds of the FDKs

While making the Flexmojos test-suite pass for the Apache FDK I ran into serious trouble. When compiling Flexmojos against the 4.8 Version all Tests that force a different FDK version would fail. While investigating the problem it turned out that this is because Flexmojos has a dependency on the Compiler in the version it was compiled against so you can use it without having to specify a FDK version. Usually when using a different compiler version, the versions used per default would have been overridden. Unfortunately this no longer works when using a compiler with a different groupId than the one Flexmojos was compiled against. The result is a mixture of both compilers being loaded which causes terrible problems. Making the dependencies to the compiler "provided" didn't work as then some of the code generation magic in the build stopped working. 

So currently there are these scenarios:

  • Compile Flexmojos against a version with the groupId you are intending to use (When compiling against "org.apache.flex:4.8" the testsuite will fail in many projects due to the problem described above, but with FDKs in "org.apache.flex" it will work)
  • Make the generator generate even the Adobe FDKs to "com.adobe.flex"

Current 6.x branch development sources ( for developers )

The current development version 6.x branch can be found at https://github.com/chrisdutz/flexmojos. Sources will be merged back to velo repository when the stable release will be released.

  • No labels