In a first version the Apache maven-flex-plugin should be compatable with all Apache FDKs but not necessarily with Adobe FDKs, especially pre Flex 4 projects. A lot of complexity of Flexmojos was due to the compatability with older Flex versions and in Flexmojos 6 it was particularly hard to add support for FDKs with the groupIds "com.adobe.flex" AND "org.apache.flex". Skipping the support of legacy FDKs will allow to develop a better optimized version of the plugin. Eventually adding support for the other versions could be dealt with after having a finished version.
Also I would suggest limiting the plugin to a reduced set of frameworks. Here I would concentrate on implementing an extensible solution, but only implement one single adapter to a particular framework.
These are the frameworks I would suggest to support:
- Code Generation:
- Gas3 Code Generator (http://www.graniteds.org/confluence/display/DOC/3.+Gas3+Code+Generator)
- Some tool able to generate AS versions of Java classes defining constants (Flexmojos had a custom implementation for this)
- UnitTesting:
- FlexUnit 4.1 (http://www.flexunit.org/)
- Optimization:
- Apparat (http://code.google.com/p/apparat/) As it has major advantages over the flex optimizer.
-Code Coverage: I would skip this in a first version
- Apparat (http://code.google.com/p/apparat/) As it has major advantages over the flex optimizer.
In general it would be wise to have the plugin configured the same way as required by the Flexmojos plugin. Only if there is a reason to do it differently. If there are multiple equivalent approaches, I would prefer the flexmojos way as this makes it easier for users previously using Flexmojos to migrate to the new plugin.
The suggested default structure of a flex project, no matter what type, should be the following:
Code Block |
---|
/pom.xml /src /main /flex /resources /locales /{locale-code /test /flex /resources /locales /{locale-code} |
The plugin should support the following packaging types:
- SWC (To generate swc libraries)
- SWF (To generate swf files)
- AIR (To generate air packaged applications)
- WAR (To copy the needed SWFs and RSLs to the web-app directory)