Skip to end of metadata
Go to start of metadata

Recently we invested quite a lot of effort to make FlexJS buildable with Maven. This required quite some refactoring on all ends. But in the end it is now possible to build FlexJS with currently just one required Environment variable.

FlexJS consists of three parts: The compiler, typedefs and the framework, each is hosted in a separate GIT repository and have to be built and released separately. The order hereby is:

  1. Compiler
  2. Typedefs
  3. Framework

In addition to building the framework libraries, the framework module also assembles the binary distribution of the FlexJS SDK. It also has a feature of assembling a fully functional FlexJS distribution in a directory of choice, by setting an additional environment variable: distributionTargetFolder. If you set this to the path of a directory, the build will create a distribution there. This can then be used directly in your IDE of choice.

Step-by-step guide

 

  1. Install Java from: http://www.oracle.com/technetwork/java/javase/downloads/index.html
  2. Install Maven 3.3.1 or greater from: http://maven.apache.org/download.cgi (I used 3.3.9)
    1. Download the archive
    2. Unpack the archive
    3. Set your systems PATH to the bin directory (I usually define a MAVEN_HOME to the unpacked directory and then add $MAVEN_HOME/bin to the PATH)
  3. Download the "Flash Player projector content debugger" for your system from: https://www.adobe.com/support/flashplayer/debug_downloads.html (The Browser plugin or ActiveX component will not work)
    1. Set an environment variable called FLASHPLAYER_DEBUGGER and set it to the path of the Flash Debug Player executable (On windows and Linux machined this is trivial as you simply provide the full path (including the executable name), on Mac's this will look something like this: {Place the Player is installed to}/Flash Player.app/Contents/MacOS/Flash Player Debugger)
      1. Example for Windows: 

      2. Example for Linux:

      3. Example for Mac:

  4. Build Compiler (flex-falcon)
    1. Clone:

    2. Go into the new directory:

    3. Build the compiler:

      This will execute all unit-tests and integration-tests. You can however run the build without any tests:

      And if you just want to run the unit-tests and skip the integration-tests:

  5. Build Typedefs (flex-typedefs)
    1. Clone:

    2. Go into the new directory:

    3. Build the typedefs:

  6. Build the Framework (flex-asjs)
    1. Clone:

    2. Go into the new directory:

    3. Build the framework libs:

      optionally you can also build the distribution binaries:

      optionally you can also build the distribution binaries and a local distribution (including dependencies for Flash, AIR) in a local directory:

The reason for specifying the "-s settings-template.xml" is that we currently are using unreleased artifacts for the mavenizer. If we don't explicitly tell maven to also look in the Apache Snapshot Repo, it will not find these. This option will no longer be needed as soon as we have released the Mavenizer for a first time.

6 Comments

  1. Just trying with a macOS Sierra clean install and step 4.c fails if you don't add "-DskipTests".

    Edit: Ok, I see this is commented a bit later. And since tests are failing at the time of this test, it's the only way to go.

    1. Actually the tests are probably only failing because of missing FLASHPLAYER_DEBUGGER. I am using Sierra and can run the tests without any issues.

  2. Hi Chris,

    I'm trying to run without skipTests, but I'm getting a message about java can't run Flash Player Debugger in mac (Permission denied). Do you know to deal with that?

    Thanks

  3. The message is: 

    java.io.IOException: Cannot run program "/Library/Internet Plug-Ins/Flash Player.plugin/Contents/MacOS/Flash Player Debugger": error=13, Permission denied



  4. Hi Chris, solved using a Flash Debugger on Application path like /Applications/Adobe/Flash/23.0/Flash\ Player.app/Contents/MacOS/Flash\ Player\ Debugger

    instead of /Library/Internet\ Plug-Ins/Flash\ Player.plugin/Contents/MacOS/Flash\ Player\ Debugger

  5. coming back to previous problem, I can confirm all three modules run without problem using only "mvn clean install" when setting FLASH_PLAYER_DEBUGGER (smile)