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

Add the steps involved:

 

  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: 

        FLASHPLAYER_DEBUGGER=C:\Program Files\Adobe\Flash\flashplayer_22_sa_debug.exe
      2. Example for Linux:

        FLASHPLAYER_DEBUGGER=/opt/adobe/flash/flashplayer_11_sa_debug.i386/flashplayerdebugger
      3. Example for Mac:

        FLASHPLAYER_DEBUGGER=/Applications/Adobe/Flash/22.0/Flash Player.app/Contents/MacOS/Flash Player Debugger
  4. Build Compiler (flex-falcon)
    1. Clone:

      git clone https://git-wip-us.apache.org/repos/asf/flex-falcon.git flex-falcon
    2. Go into the new directory:

      cd flex-falcon
      git checkout develop
    3. Build the compiler:

      mvn -s settings-template.xml clean install

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

      mvn -s settings-template.xml -DskipTests clean install

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

      mvn -s settings-template.xml -DskipITs clean install
  5. Build Typedefs (flex-typedefs)
    1. Clone:

      git clone https://git-wip-us.apache.org/repos/asf/flex-typedefs.git flex-typedefs
    2. Go into the new directory:

      cd flex-typedefs
      git checkout develop
    3. Build the typedefs:

      mvn -s settings-template.xml clean install
  6. Build the Framework (flex-asjs)
    1. Clone:

      git clone https://git-wip-us.apache.org/repos/asf/flex-asjs.git flex-asjs
    2. Go into the new directory:

      cd flex-asjs
      git checkout develop
    3. Build the framework libs:

      mvn -s settings-template.xml clean install

      optionally you can also build the distribution binaries:

      mvn -s settings-template.xml -P build-distribution clean install

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

      mvn -s settings-template.xml -DdistributionTargetFolder={pathToDistributionDirectory} -P build-distribution clean install

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.

Related articles

Related articles appear here based on the labels you select. Click to edit the macro and add or change labels.

Related issues