Maven and Flex Builder - apache-flex

I use Flex Builder to generate data binding for my Flex app with Blaze DS. When I compile my pp from Flex Builder everything works just fine. But when I try to compile it with Maven I has a problem with missing libraries.
I discovered that maven miss the following libs:
fds.swc, fds_rb.swc
fiber.swc, fiber_rb.swd
serializers.swc, serializers_rd.swc
As a temporal solution I added this libs to my maven repository and everything seems to work fine, but I would like to know names of the proper libs to add to my pom.xml

First of all, are you really using "Flex Builder" (e.g. v3) or are you using "Flash Builder" (v4)?
Also, are you using Flexmojos to compile the Flex project in Maven?
Regardless, you can/should just use the Adobe Flex Maven repository set up by Sonatype/Flexmojos. It is located here:
https://repository.sonatype.org/content/groups/flexgroup/
I use Nexus to proxy this repository for me, but you could just add it to your pom.xml file(s). Hope this helps.

As the SWC's you mentioned aren't open-source by adobe and not included in the sdk, we found manually uploading them to our repo was the only way to overcome the broken build.
cheers

You can find that swc in this repository now
<repository>
<id>sinusgear</id>
<name>SinusGear repo</name>
<url>http://maven.sinusgear.com/maven_repo/</url>
</repository>

Related

Class not found with SWC compiled with FlexMojos and Maven

Here is my virtual project setup:
A swc library what is using Open Source Media Framework (OSMF). This
library is installed as a Maven artifact with FlexMojos.
A main application that is compiled as swf and using the library with OSMF as a Maven dependency.
The project is compiled fine but when I try to open the resulting .swf the Flash Player throws an exception saying that one of OSMF classes is missing (org.osmf.media.PluginInfo class not found).
Decompilation of both swc and swf showed that PluginInfo is not there.
staticLinkRuntimeSharedLibraries does not help.
Is it possible to force libraries classes include in this setup with Mojos and Maven?
Thanks in advance.
I haven't used the Maven FlexMojo, but with Ant you need to specify the include-classes attribute to force the classes into the built library.
The flexmojo:compile-swc goal has the includeClasses parameter. I'm betting that's what you need to include.

Flash Builder 4.5: could not resolve X to a component implementation

I just upgraded out Flex project to use SDK version 4.5.1.21328 and the Flash Builder to version 4.5
All of the sudden, I'm getting several red tags on the Flash Builder: "could not resolve s:State/fx:Script/whatever to a component implementation"
However, the project builds fine with Maven, and seems to work well too.
Does anyone have any information on how to remove these "problems"?
Thanks.
Finally managed to find a workaround. Adding
--namespace+=http://ns.adobe.com/mxml/2009,${flexlib}/mxml-2009-manifest.xml --namespace+=http://www.adobe.com/2006/mxml,${flexlib}/mxml-manifest.xml --namespace+=library://ns.adobe.com/flex/spark,${flexlib}/spark-manifest.xml
to the "Additional compiler arguments" in properties -> Flex Compiler seems to remove all the red markers.
Great tip. Error I was getting was:
Could not resolve <mx:RichTextEditor> to a component implementation.
I had to add the above settings and do the following to get mine to compile.
Here's what I did:
project properties->Flex Build->Path-> Library path tab. press Add SWC...
add C:/Program Files/Adobe/Adobe Flash Builder 4.5/sdks/4.5.1/frameworks/libs/mx/mx.swc
Then in the Source Path tab press add folder navigate to:
C:/Program Files/Adobe/Adobe Flash Builder 4.5/sdks/4.5.1/frameworks/projects/mx/src
then add in the namespaces as listed in the above article. That fixed it for me.
Clean.
Just as the commenter said, usually just a strange Flash Builder bug. If Project -> Clean... doesn't fix it, comment or revise question.
Your batch builder might be using a different set of library files than the IDE. Look in Project | Properties under Build Path and see what version of the SDK it's using.

Handling server JAR in maven

There are some server jars in my project which i want to migrate to maven ..
I don't have any idea how can i have dependencies attached to these jars.. there are almost 24 jars.. So how can add them to the project scope
The approach you can take depends on whether you have access to the sources of those 'server' jars or not. If you do, then nothing prevents you from creating one/more Maven projects, packaging these and deploying them in your Maven repository.
If you don't have access to the sources and these aren't already available in official Maven repositories, then all you can do is put those in your Maven repository by using maven install:
Often times you will have 3rd party JARs that you need to put in your local repository for use in your builds. The JARs must be placed in the local repository in the correct place in order for it to be correctly picked up by Maven. To make this easier, and less error prone, we have provide a goal in the install plug-in which should make this relatively painless.
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> \
-DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>
Once done for all of these jars, just add dependencies to your project.
I don't recommend you add the server jars in your POM, instead I just use the API jar
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
The advantage is you are conforming to a portable standard. M2E will compile things correctly and it will still run your application correctly when deployed to the runtime provided it supports the API.
If you want to explicitly see it you can add the runtime by going to the project preferences then going to Targetted Runtimes. You only need to do it on the EAR it will do the included projects in the EAR for you. The advantage of adding the targetted runtime is Eclipse may do extra validation specific for your server.

Trouble compiling flashbuilder project with sdk 3.*

I have a series of projects that we have been using Flex3/Flashbuilder to work with, but I've recently been trying to move over to Flashdevelop for most of my development but I have hit a snag with a certain project structure that Flex/FB can handle but FD/mxmlc can't with sdk 3.*
What I have is something like this:
project_root/
/src
/resources
The resources in flex is added as a class path to the project and I am embedding images like this: [Embed(source="/wardrobe.png")]
This all works fine in Flex/FB but FD I get there errors for all my images :
Error:unable to resolve '/wardrobe.png' for transcoding
Error:unable to transcode /wardrobe.png
This problem don't occur when I'm using the Flex 4 sdk, but for these projects I require 3.2. If anyone has any idea of what these projects won't build and a way to make them work outside of Flex/FB that would be great.
Good news:
there is a reason why the Flex 3 SDK does not resolve embeds in the entire classpath but only the class' one.
Bad news:
it's a bug which is not going to be fixed in Flex 3 SDK (it's ok in Flex 4 SDK).
As a matter of fact, both FlashBuilder and Maven Flexmojos use a workaround (they inject a custom "resource resolver" in the compiler).
Solution:
The best you can do is to fix embed paths like: "/../resources/wardrobe.png" (the starting "/" makes the path relative to the class' classpath root).
try cleaning the project
i don't know where in flex builder but in eclipse it in Project>Clean
then build again the project..

Flex Mojo Maven Compile Question

I am trying to get the flex mojos maven compiler to run my projects.
Anyone with feedback on the below information is appreciated.
I am using this configuration for the maven compiler plugin and for
some reason every time I run the clean install on my SWF project I
still see the following in the compile step for the app.
info.rvin.mojo
flex-compiler-mojo
true
true
-compiler.accessible=false
-compiler.actionscript-file-encoding UTF-8
-compiler.allow-source-path-overlap=false
-compiler.as3=true
-compiler.debug=false
That means I can not connect to my app via the Flex Builder's debug
tool. Any thoughts on how I should properly configure the plugin in
the pom.xml?
Thanks!
adam, we're just starting to build out the chapter on flexmojos in Maven: The Definitive Guide. For starters, use the new plugin groupId, artifactId that is listed in that chapter. velo moved the flexmojos project over to the Sonatype Forge a few months ago, and we're just getting the 3.0 release out.
To anyone out there reading this: remember Maven is a build tool; it only (typically) executes (parts of) your code as a consequence of executing the tests you've implemented.

Resources