You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2015/06/15 08:31:22 UTC

[48/48] git commit: [flex-utilities] [refs/heads/develop] - move mavenizer under flex-maven-tools

move mavenizer under flex-maven-tools


Project: http://git-wip-us.apache.org/repos/asf/flex-utilities/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-utilities/commit/657a7def
Tree: http://git-wip-us.apache.org/repos/asf/flex-utilities/tree/657a7def
Diff: http://git-wip-us.apache.org/repos/asf/flex-utilities/diff/657a7def

Branch: refs/heads/develop
Commit: 657a7defe05d65ba290cfecffcf9fdd1602da2ad
Parents: bfa34a4
Author: Alex Harui <ah...@apache.org>
Authored: Sun Jun 14 23:19:49 2015 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Sun Jun 14 23:19:49 2015 -0700

----------------------------------------------------------------------
 flex-maven-tools/mavenizer/LICENSE              | 203 +++++
 flex-maven-tools/mavenizer/NOTICE               |   5 +
 flex-maven-tools/mavenizer/README.txt           | 222 ++++++
 flex-maven-tools/mavenizer/RELEASE_NOTES        |  19 +
 flex-maven-tools/mavenizer/cli/pom.xml          | 107 +++
 .../converter/core/SdkConverterCLI.java         | 394 ++++++++++
 .../mavenizer/converters/air/pom.xml            |  41 ++
 .../utilities/converter/air/AirConverter.java   | 266 +++++++
 .../mavenizer/converters/base/pom.xml           |  51 ++
 .../flex/utilities/converter/BaseConverter.java | 426 +++++++++++
 .../flex/utilities/converter/Converter.java     |  28 +
 .../exceptions/ConverterException.java          |  32 +
 .../converter/model/MavenArtifact.java          | 168 +++++
 .../src/main/resources/templates/default.ftl    |  41 ++
 .../base/src/main/resources/templates/pom.ftl   |  55 ++
 .../mavenizer/converters/flash/pom.xml          |  46 ++
 .../converter/flash/FlashConverter.java         | 286 ++++++++
 .../mavenizer/converters/flex/pom.xml           |  64 ++
 .../utilities/converter/flex/FlexConverter.java | 735 +++++++++++++++++++
 .../mavenizer/converters/fontkit/pom.xml        |  41 ++
 .../converter/fontkit/FontkitConverter.java     |  74 ++
 flex-maven-tools/mavenizer/converters/pom.xml   |  45 ++
 .../mavenizer/converters/wrapper/pom.xml        |  41 ++
 .../converter/wrapper/WrapperConverter.java     |  93 +++
 .../mavenizer/deployers/aether/pom.xml          | 125 ++++
 .../deployer/aether/AetherDeployer.java         | 248 +++++++
 .../mavenizer/deployers/maven/pom.xml           |  67 ++
 .../converter/deployer/maven/MavenDeployer.java | 185 +++++
 flex-maven-tools/mavenizer/deployers/pom.xml    |  38 +
 .../mavenizer/maven-extension/pom.xml           | 118 +++
 .../converter/mavenextension/FlexEventSpy.java  | 241 ++++++
 flex-maven-tools/mavenizer/pom.xml              |  80 ++
 .../mavenizer/retrievers/base/pom.xml           |  69 ++
 .../converter/retrievers/BaseRetriever.java     | 116 +++
 .../converter/retrievers/Retriever.java         |  32 +
 .../exceptions/RetrieverException.java          |  32 +
 .../retrievers/types/PlatformType.java          |  49 ++
 .../converter/retrievers/types/SdkType.java     |  30 +
 .../converter/retrievers/utils/ProgressBar.java |  47 ++
 .../retrievers/types/PlatformTypeTest.java      |  69 ++
 .../mavenizer/retrievers/download/pom.xml       |  53 ++
 .../retrievers/download/DownloadRetriever.java  | 459 ++++++++++++
 .../retrievers/download/SystemIdHelper.java     |  35 +
 .../src/main/resources/message.properties       |  25 +
 flex-maven-tools/mavenizer/retrievers/pom.xml   |  38 +
 mavenizer/LICENSE                               | 203 -----
 mavenizer/NOTICE                                |   5 -
 mavenizer/README.txt                            | 222 ------
 mavenizer/RELEASE_NOTES                         |  19 -
 mavenizer/cli/pom.xml                           | 107 ---
 .../converter/core/SdkConverterCLI.java         | 394 ----------
 mavenizer/converters/air/pom.xml                |  41 --
 .../utilities/converter/air/AirConverter.java   | 266 -------
 mavenizer/converters/base/pom.xml               |  51 --
 .../flex/utilities/converter/BaseConverter.java | 426 -----------
 .../flex/utilities/converter/Converter.java     |  28 -
 .../exceptions/ConverterException.java          |  32 -
 .../converter/model/MavenArtifact.java          | 168 -----
 .../src/main/resources/templates/default.ftl    |  41 --
 .../base/src/main/resources/templates/pom.ftl   |  55 --
 mavenizer/converters/flash/pom.xml              |  46 --
 .../converter/flash/FlashConverter.java         | 286 --------
 mavenizer/converters/flex/pom.xml               |  64 --
 .../utilities/converter/flex/FlexConverter.java | 735 -------------------
 mavenizer/converters/fontkit/pom.xml            |  41 --
 .../converter/fontkit/FontkitConverter.java     |  74 --
 mavenizer/converters/pom.xml                    |  45 --
 mavenizer/converters/wrapper/pom.xml            |  41 --
 .../converter/wrapper/WrapperConverter.java     |  93 ---
 mavenizer/deployers/aether/pom.xml              | 125 ----
 .../deployer/aether/AetherDeployer.java         | 248 -------
 mavenizer/deployers/maven/pom.xml               |  67 --
 .../converter/deployer/maven/MavenDeployer.java | 185 -----
 mavenizer/deployers/pom.xml                     |  38 -
 mavenizer/maven-extension/pom.xml               | 118 ---
 .../converter/mavenextension/FlexEventSpy.java  | 241 ------
 mavenizer/pom.xml                               |  80 --
 mavenizer/retrievers/base/pom.xml               |  69 --
 .../converter/retrievers/BaseRetriever.java     | 116 ---
 .../converter/retrievers/Retriever.java         |  32 -
 .../exceptions/RetrieverException.java          |  32 -
 .../retrievers/types/PlatformType.java          |  49 --
 .../converter/retrievers/types/SdkType.java     |  30 -
 .../converter/retrievers/utils/ProgressBar.java |  47 --
 .../retrievers/types/PlatformTypeTest.java      |  69 --
 mavenizer/retrievers/download/pom.xml           |  53 --
 .../retrievers/download/DownloadRetriever.java  | 459 ------------
 .../retrievers/download/SystemIdHelper.java     |  35 -
 .../src/main/resources/message.properties       |  25 -
 mavenizer/retrievers/pom.xml                    |  38 -
 90 files changed, 5639 insertions(+), 5639 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/657a7def/flex-maven-tools/mavenizer/LICENSE
----------------------------------------------------------------------
diff --git a/flex-maven-tools/mavenizer/LICENSE b/flex-maven-tools/mavenizer/LICENSE
new file mode 100644
index 0000000..6b0b127
--- /dev/null
+++ b/flex-maven-tools/mavenizer/LICENSE
@@ -0,0 +1,203 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/657a7def/flex-maven-tools/mavenizer/NOTICE
----------------------------------------------------------------------
diff --git a/flex-maven-tools/mavenizer/NOTICE b/flex-maven-tools/mavenizer/NOTICE
new file mode 100644
index 0000000..d1becf0
--- /dev/null
+++ b/flex-maven-tools/mavenizer/NOTICE
@@ -0,0 +1,5 @@
+Apache Flex Mavenizer
+Copyright 2015 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/657a7def/flex-maven-tools/mavenizer/README.txt
----------------------------------------------------------------------
diff --git a/flex-maven-tools/mavenizer/README.txt b/flex-maven-tools/mavenizer/README.txt
new file mode 100644
index 0000000..7f84e76
--- /dev/null
+++ b/flex-maven-tools/mavenizer/README.txt
@@ -0,0 +1,222 @@
+Apache Flex SDK Converter
+=========================
+	The Mavenizer tool is used to convert the Apache and Adobe Flex SDKs and Air
+	SDKs into Maven artifacts. Automatically creating the Directories, pom-files,
+	copying and moving the resources to the correct destinations.
+
+	These artifacts can be used in Maven builds using the Flexmojos plugin
+	(Starting with version 6.x).
+
+	The Apache Flex SDK Converter comes with all the means to download, convert
+	and deploy a mavenized form of an Apache Flex SDK.
+
+    The Converter does not simply copy all java libraries to the destination; it checks
+    if the given artifact has already been deployed to maven central or by deploying an
+    other FDK previously. For this check you do need an internet connection to do the
+    conversion, otherwise it will probably take forever.
+
+    Internally it consists of 3 components:
+    - One Retriever
+    	- DownloadRetriever: For downloading binary artifacts
+    - Four Converters
+    	- One for producing the Apache Flex SDK artifacts
+    	- One for producing the Adobe Flash artifacts
+    	- One for producing the Adobe Air artifacts
+    	- One for producing the Adobe Fontkit artifacts
+    - Two Deployers
+    	- One using Aether with no requirement to Maven (Faster, but less configurable)
+    	- One using a local Maven installation (A lot slower, but fully configurable)
+
+
+
+Getting the latest sources via git
+==================================
+
+    Getting the source code is the recommended way to get the Apache Flex SDK
+    Converter.
+
+    You can always checkout the latest source via git using the following
+    command:
+
+	 git clone https://git-wip-us.apache.org/repos/asf/flex-utilities.git flex-utilities
+	 cd flex-utilities/mavenizer
+	 git checkout develop
+
+Building the Apache Flex SDK Converter
+======================================
+
+    The Apache Flex SDK Converter is a relatively simple project. It requires some
+    build tools which must be installed prior to building the compiler and it depends
+    on some external software which are downloaded as part of the build process.
+    Some of these have different licenses. See the Software Dependencies section
+    for more information on the external software dependencies.
+
+Install Prerequisites
+---------------------
+
+    Before building the Apache Flex Compiler you must install the following software
+    and set the corresponding environment variables using absolute file paths.
+    Relative file paths will result in build errors.
+
+    ==================================================================================
+    SOFTWARE                                    ENVIRONMENT VARIABLE (absolute paths)
+    ==================================================================================
+
+    Java SDK 1.6 or greater (*1)                JAVA_HOME
+
+    Maven 3.1.0 or greater (*1)                 MAVEN_HOME
+
+    ==================================================================================
+
+    *1) The bin directories for MAVEN_HOME and JAVA_HOME should be added to your
+        PATH.
+
+        On Windows, set PATH to
+
+            PATH=%PATH%;%MAVEN_HOME%\bin;%JAVA_HOME%\bin
+
+        On the Mac (bash), set PATH to
+
+            export PATH="$PATH:$MAVEN_HOME/bin:$JAVA_HOME/bin"
+
+         On Linux make sure you path include MAVEN_HOME and JAVA_HOME.
+
+Software Dependencies
+---------------------
+
+    The Apache Flex SDK Converter uses third-party code that will be downloaded as
+    part of the build.
+
+    The Apache Version 2.0 license is in the LICENSE file.
+
+    The following dependencies have licenses which are, or are compatible with,
+    the Apache Version 2.0 license.  You will not be prompted to acknowledge the
+    download.  Most of the jars are installed in your maven local repository and
+    are included in the assembly jars.
+
+TODO: Add them all here ...
+
+Building the Source in the Source Distribution
+----------------------------------------------
+
+    The project is built with Apache Maven so for a reference to Maven commands
+    please have a look at the Maven documentation.
+
+    When you have all the prerequisites in place and the environment variables
+    set (see Install Prerequisites above) use
+
+        cd <mavenizer.dir>
+        mvn install
+
+    to download the thirdparty dependencies and build the binary from the source.
+
+    To clean the build, of everything other than the downloaded third-party
+    dependencies use
+
+        mvn clean
+
+    The packages can be found in the "target" subdirectories.
+
+    The particularly interesting one is the Standalone Command Line Interface:
+    - cli/target/apache-flex-sdk-converter-1.0.0-SNAPSHOT.jar
+
+
+
+Using the Apache Flex SDK Converter
+===================================
+
+	The CLI (Command Line Interface) allows the Apache Flex SDK Converter
+	to be executed from the command-line. Assuming the Java executable is
+	available on the current systems path, it can be called using:
+
+ 	cd <mavenizer.dir>/cli/target
+	java -jar apache-flex-sdk-converter-1.0.0-SNAPSHOT.jar
+
+	If executed without any command, it will output a list of commands and
+	available properties.
+
+	In general it is able to perform 4 different commands:
+
+	- help		Prints a list of all commands and options available.
+	- list     	Lists all versions and platforms available for download
+	- download  Downloads selected versions and assembles an FDK
+	- convert   Converts a previously installed (using the installer) or
+				assembled (using download command) FDK into a mavenized form.
+	- deploy    Uploads previously created maven artifacts to a remote repository.
+
+Some typical usage scenarios
+----------------------------
+
+	- Create a mavenized version of a previously installed FDK (Using the installer):
+	   	"... -fdkDir <FDK install dir> -mavenDir <maven local repo> convert"
+
+	- Download and create an FDK (Flex 4.14.1 with playerglobal 17.0 and 16.0
+		AIR SDK 17.0 for Windows and Mac and the fontkit libs):
+   		"... -fdkDir <FDK target dir> -flexVersion 4.14.1 -flashVersions 17.0,16.0 \
+   			-airVersion 17.0 -platform WINDOWS,MAC -fontkit download"
+
+	- Download and convert an FDK (FDK assembled in temp directory using Air for
+		current systems platform only):
+   		"... -flexVersion 4.14.1 -flashVersions 17.0 -airVersion 17.0 -fontkit \
+   			-mavenDir <maven local repo> download convert"
+
+	- Deploy a bunch of maven artifacts to a remote maven repository:
+   		"... -mavenDir <dir with maven artifacts> -repoUrl <url> \
+   			-repoUsername <username> -repoPassword <pasword> deploy"
+
+	- "The works": Download, Convert and Deploy using only temp directories:
+   		"... -flexVersion 4.14.1 -flashVersions 17.0 -airVersion 17.0 -fontkit \
+   			-repoUrl <url> -repoUsername <username> -repoPassword <pasword> \
+   			download convert deploy"
+
+
+Thanks for using Apache Flex.  Enjoy!
+
+                                          The Apache Flex Project
+                                          <http://flex.apache.org>
+
+
+
+
+
+/////////////////////////////////////////////////////////////////////////////////////////
+Some information (HOWTO) to go with the deployer artifacts
+/////////////////////////////////////////////////////////////////////////////////////////
+
+The deployers are separate modules. Currently two implementations exist.
+1. The Maven deployer (located in deployers/maven/target/maven-deployer-1.0.0-full.jar)
+2. The Aether deployer (located in deployers/aether/target/aether-deployer-1.0.0-full.jar)
+
+The Maven-Deployer expects Maven to be installed on your system and issues a set of
+commandline commands in order to deploy the artifacts. This is the safest approach if you
+haven any special settings that need to be handled in order to deploy the artifacts.
+
+The Aether-Deplyoer uses the Maven-Internal aether libraries to deploy the artifacts from
+within the running JVM. This makes this approach a lot faster than the Maven-Deployer.
+
+/////////////////////////////////////////
+Usage for the Maven Deployer:
+/////////////////////////////////////////
+
+java -cp {home}/deployers/maven/target/maven-deployer-1.0.0-full.jar "directory" "repositoryId" "url" "mvn"
+
+The Maven-Deployer needs 4 ordered parameters separated by spaces:
+    1- directory: The path to the directory to deploy.
+    2- repositoryId: Server Id to map on the <id> under <server> section of settings.xml.
+    3- url: URL where the artifacts will be deployed.
+    4- mvn: The path to the mvn.bat / mvn.sh.
+
+/////////////////////////////////////////
+Usage for the Maven Deployer:
+/////////////////////////////////////////
+
+java -cp {home}/deployers/aether/target/maven-aether-1.0.0-full.jar "directory" "url" ["username" "password]
+
+The Aether-Deployer needs 2 ordered parameters separated by spaces:
+    1- directory: The path to the directory to deploy.
+    2- url: URL where the artifacts will be deployed.
+Optionally you can provide the username and password that is used for deploying artifacts.
+    3- username: The username needed to log-in to the remote repository.
+    4- password: The password needed to log-in to the remote repository.
+
+

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/657a7def/flex-maven-tools/mavenizer/RELEASE_NOTES
----------------------------------------------------------------------
diff --git a/flex-maven-tools/mavenizer/RELEASE_NOTES b/flex-maven-tools/mavenizer/RELEASE_NOTES
new file mode 100644
index 0000000..d51fd96
--- /dev/null
+++ b/flex-maven-tools/mavenizer/RELEASE_NOTES
@@ -0,0 +1,19 @@
+Apache Flex Mavenizer 1.0.0
+===========================
+
+Apache Flex Mavenizer 1.0.0 is the first release of a tool allowing, automating
+the conversion of Apache Flex FDKs into Maven artifacts that can be used by
+FlexMojos to build Apache Flex application using Maven.
+
+Known Issues
+_____________
+
+Currently None.
+
+
+Please report new issues to our bug tracker at:
+
+    https://issues.apache.org/jira/browse/FLEX
+
+                                          The Apache Flex Project
+                                          <http://flex.apache.org/>

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/657a7def/flex-maven-tools/mavenizer/cli/pom.xml
----------------------------------------------------------------------
diff --git a/flex-maven-tools/mavenizer/cli/pom.xml b/flex-maven-tools/mavenizer/cli/pom.xml
new file mode 100644
index 0000000..511ac31
--- /dev/null
+++ b/flex-maven-tools/mavenizer/cli/pom.xml
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.flex.utilities.converter</groupId>
+        <artifactId>apache-flex-sdk-converter</artifactId>
+        <version>1.0.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>cli</artifactId>
+    <version>1.0.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
+
+    <build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-assembly-plugin</artifactId>
+                <version>2.4</version>
+                <configuration>
+                    <archive>
+                        <manifest>
+                            <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
+                            <addClasspath>true</addClasspath>
+                            <mainClass>org.apache.flex.utilities.converter.core.SdkConverterCLI</mainClass>
+                        </manifest>
+                        <manifestEntries>
+                            <Implementation-Build>${project.version}</Implementation-Build>
+                        </manifestEntries>
+                    </archive>
+                    <descriptorRefs>
+                        <descriptorRef>jar-with-dependencies</descriptorRef>
+                    </descriptorRefs>
+                    <finalName>apache-flex-sdk-converter-${project.version}</finalName>
+                    <appendAssemblyId>false</appendAssemblyId>
+                </configuration>
+                <executions>
+                    <execution>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>single</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.flex.utilities.converter</groupId>
+            <artifactId>download-retriever</artifactId>
+            <version>1.0.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.flex.utilities.converter</groupId>
+            <artifactId>flex-converter</artifactId>
+            <version>1.0.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.flex.utilities.converter</groupId>
+            <artifactId>aether-deployer</artifactId>
+            <version>1.0.0-SNAPSHOT</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-artifact</artifactId>
+            <version>3.2.3</version>
+        </dependency>
+
+        <dependency>
+            <groupId>commons-cli</groupId>
+            <artifactId>commons-cli</artifactId>
+            <version>1.2</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+            <version>3.3.2</version>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-simple</artifactId>
+            <version>1.7.7</version>
+        </dependency>
+    </dependencies>
+
+</project>

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/657a7def/flex-maven-tools/mavenizer/cli/src/main/java/org/apache/flex/utilities/converter/core/SdkConverterCLI.java
----------------------------------------------------------------------
diff --git a/flex-maven-tools/mavenizer/cli/src/main/java/org/apache/flex/utilities/converter/core/SdkConverterCLI.java b/flex-maven-tools/mavenizer/cli/src/main/java/org/apache/flex/utilities/converter/core/SdkConverterCLI.java
new file mode 100644
index 0000000..918dd70
--- /dev/null
+++ b/flex-maven-tools/mavenizer/cli/src/main/java/org/apache/flex/utilities/converter/core/SdkConverterCLI.java
@@ -0,0 +1,394 @@
+package org.apache.flex.utilities.converter.core;
+
+import org.apache.commons.cli.*;
+import org.apache.commons.io.FileUtils;
+import org.apache.flex.utilities.converter.air.AirConverter;
+import org.apache.flex.utilities.converter.deployer.aether.AetherDeployer;
+import org.apache.flex.utilities.converter.flash.FlashConverter;
+import org.apache.flex.utilities.converter.flex.FlexConverter;
+import org.apache.flex.utilities.converter.fontkit.FontkitConverter;
+import org.apache.flex.utilities.converter.retrievers.download.DownloadRetriever;
+import org.apache.flex.utilities.converter.retrievers.types.PlatformType;
+import org.apache.flex.utilities.converter.retrievers.types.SdkType;
+import org.apache.flex.utilities.converter.wrapper.WrapperConverter;
+import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.*;
+
+/**
+ * Created by christoferdutz on 07.04.15.
+ */
+public class SdkConverterCLI {
+
+    public static final String COMMAND_HELP = "help";
+    public static final String COMMAND_LIST = "list";
+    public static final String COMMAND_DOWNLOAD = "download";
+    public static final String COMMAND_CONVERT = "convert";
+    public static final String COMMAND_DEPLOY = "deploy";
+
+    public static final String OPTION_FLEX_VERSION = "flexVersion";
+    public static final String OPTION_FLASH_VERSIONS = "flashVersions";
+    public static final String OPTION_AIT_VERSION = "airVersion";
+    public static final String OPTION_FONTKIT = "fontkit";
+    public static final String OPTION_PLATFORMS = "platforms";
+
+    public static final String OPTION_FDK_DIR = "fdkDir";
+    public static final String OPTION_MAVEN_DIR = "mavenDir";
+
+    public static final String OPTION_REPO_URL = "repoUrl";
+    public static final String OPTION_REPO_USERNAME = "repoUsername";
+    public static final String OPTION_REPO_PASSWORD = "repoPassword";
+
+
+    @SuppressWarnings("unchecked")
+    public static void main(String[] args) throws Exception {
+        Options options = new Options();
+        options.addOption(OptionBuilder.withArgName("version").hasArg().
+                withDescription("(Optional and Only valid for download) Version of the " +
+                        "FDK which should be downloaded.").
+                isRequired(false).
+                create(OPTION_FLEX_VERSION));
+        options.addOption(OptionBuilder.withArgName("version(s)").hasArg().
+                withValueSeparator(',').
+                withDescription("(Optional and Only valid for download) Version(s) of the " +
+                        "Adobe Flash SDK which should be downloaded. Multiple versions can " +
+                        "be separated by \",\".").
+                isRequired(false).
+                create(OPTION_FLASH_VERSIONS));
+        options.addOption(OptionBuilder.withArgName("version").hasArg().
+                withDescription("(Optional and Only valid for download) Version of the " +
+                        "Adobe Air SDK which should be downloaded.").
+                isRequired(false).
+                create(OPTION_AIT_VERSION));
+        options.addOption(OptionBuilder.
+                withDescription("(Optional and Only valid for download) If provided, the " +
+                        "Converter will also download the Fontkit libraries needed for font " +
+                        "encoding.").
+                isRequired(false).
+                create(OPTION_FONTKIT));
+        options.addOption(OptionBuilder.withArgName("platform(s)").hasArg().
+                withValueSeparator(',').
+                withDescription("(Optional and Only valid for download) Platform the artifacts " +
+                        "should be downloaded for. If omitted the platform this process is run " +
+                        "on will be used. Valid options are: \"WINDOWS\", \"MAC\" and \"LNX\". " +
+                        "Multiple versions can be separated by \",\".").
+                isRequired(false).
+                create(OPTION_PLATFORMS));
+        options.addOption(OptionBuilder.withArgName("dir").hasArg().
+                withDescription("(Optional) Directory that the FDK will be located in. " +
+                        "If omitted, a temporary directory will be used.").
+                isRequired(false).
+                create(OPTION_FDK_DIR));
+        options.addOption(OptionBuilder.withArgName("dir").hasArg().
+                withDescription("(Optional) Directory that the mavenized artifacts will be located in. " +
+                        "If omitted, a temporary directory will be used.").
+                isRequired(false).
+                create(OPTION_MAVEN_DIR));
+        options.addOption(OptionBuilder.withArgName("url").hasArg().
+                withDescription("(Optional and only valid for deploy) Url of the remote Maven " +
+                        "repository that the generated Maven artifacts should be deployed to.").
+                isRequired(false).
+                create(OPTION_REPO_URL));
+        options.addOption(OptionBuilder.withArgName("username").hasArg().
+                withDescription("(Optional and only valid for deploy) Username used to authenticate " +
+                        "on the remote Maven repository that the generated Maven artifacts should be " +
+                        "deployed to.").
+                isRequired(false).
+                create(OPTION_REPO_USERNAME));
+        options.addOption(OptionBuilder.withArgName("password").hasArg().
+                withDescription("(Optional and only valid for deploy) Password used to authenticate " +
+                        "on the remote Maven repository that the generated Maven artifacts should be " +
+                        "deployed to.").
+                isRequired(false).
+                create(OPTION_REPO_PASSWORD));
+
+        CommandLineParser parser = new BasicParser();
+        try {
+            CommandLine cmd = parser.parse(options, args);
+            if(cmd.getArgList().isEmpty() || cmd.getArgList().contains(COMMAND_HELP)) {
+                printHelp(options);
+                System.exit(0);
+            }
+
+            // Find out the desired platform(s).
+            List<PlatformType> platforms = new ArrayList<PlatformType>();
+            String platformParam = cmd.getOptionValue(OPTION_PLATFORMS);
+            if((platformParam != null) && !platformParam.isEmpty()) {
+                String[] platformNames = platformParam.split(",");
+                for(String platformName : platformNames) {
+                    platforms.add(PlatformType.valueOf(platformName));
+                }
+            }
+
+            if(platforms.isEmpty()) {
+                try {
+                    platforms.add(PlatformType.getCurrent());
+                } catch (Exception e) {
+                    System.err.println("Unsupported OS type. Provide manually using 'platform' parameter.");
+                    System.exit(1);
+                }
+            }
+
+            /////////////////////////////////////////////////////////
+            // Validate sensible combinations of commands.
+            /////////////////////////////////////////////////////////
+
+            // Check that all commands are valid.
+            for(String command : (List<String>) cmd.getArgList()) {
+                if(!COMMAND_LIST.equals(command) && !COMMAND_DOWNLOAD.equals(command) &&
+                        !COMMAND_CONVERT.equals(command) && !COMMAND_DEPLOY.equals(command)) {
+                    System.err.println("Unsupported command '" + command + "'.");
+                    System.exit(1);
+                }
+            }
+
+            // Downloading and deploying without converting doesn't make sense.
+            if(cmd.getArgList().contains(COMMAND_DOWNLOAD) && !cmd.getArgList().contains(COMMAND_CONVERT) &&
+                    cmd.getArgList().contains(COMMAND_DEPLOY)) {
+                System.err.println("Downloading and deploying without conversion doesn't make much sense.");
+                System.exit(1);
+            }
+
+            // If Downloading and not converting, the fdkDir parameter has to be provided as
+            // otherwise the download result would reside in some strange temp directory.
+            if(cmd.getArgList().contains(COMMAND_DOWNLOAD) && !cmd.getArgList().contains(COMMAND_CONVERT)
+                    && !cmd.hasOption(OPTION_FDK_DIR)) {
+                System.err.println("Parameter 'fdkDir' required for task 'download' without conversion.");
+                System.exit(1);
+            }
+
+            // If Converting and not deploying, the mavenDir parameter has to be provided as
+            // otherwise the converted FDK would reside in some strange temp directory.
+            if(cmd.getArgList().contains(COMMAND_CONVERT) && !cmd.getArgList().contains(COMMAND_DEPLOY)
+                    && !cmd.hasOption(OPTION_MAVEN_DIR)) {
+                System.err.println("Parameter 'mavenDir' required for task 'convert' without deployment.");
+                System.exit(1);
+            }
+
+            // Downloading nothing doesn't really make sense. On the bad side it even causes
+            // problems with the converter without any fdkDir parameter, therefore we abort here.
+            if(cmd.getArgList().contains(COMMAND_DOWNLOAD) && !cmd.hasOption(OPTION_FLEX_VERSION) &&
+                    !cmd.hasOption(OPTION_FLASH_VERSIONS) && !cmd.hasOption(OPTION_AIT_VERSION) &&
+                    !cmd.hasOption(OPTION_FONTKIT)) {
+                System.err.println("At least one of the parameters 'flexVersion', 'flashVersions', 'airVersion' or " +
+                        "'fontkit' required for task 'download'.");
+                System.exit(1);
+            }
+
+            // Find out where to download or convert from.
+            File fdkDir = cmd.hasOption(OPTION_FDK_DIR) ?
+                    new File(cmd.getOptionValue(OPTION_FDK_DIR)) : getTempDir("FLEX-DOWNLOAD-");
+
+            // Find out where to convert to or deploy from.
+            File mavenDir = cmd.hasOption(OPTION_MAVEN_DIR) ?
+                    new File(cmd.getOptionValue(OPTION_MAVEN_DIR)) : getTempDir("FLEX-MAVEN-");
+
+            ////////////////////////////////////////////////////////////////////////////
+            // Exectute operations
+            ////////////////////////////////////////////////////////////////////////////
+
+            // Output a list of all available downloads.
+            if(cmd.getArgList().contains(COMMAND_LIST)) {
+                System.out.println("-----------------------------------------------");
+                System.out.println("- Available downloads");
+                System.out.println("-----------------------------------------------");
+
+                DownloadRetriever retriever = new DownloadRetriever();
+                System.out.println("Apache Flex:");
+                List<DefaultArtifactVersion> versions = new ArrayList<DefaultArtifactVersion>(
+                        retriever.getAvailableVersions(SdkType.FLEX).keySet());
+                Collections.sort(versions);
+                for(DefaultArtifactVersion version : versions) {
+                    System.out.println(" - " + version.toString());
+                }
+                System.out.println();
+
+                System.out.println("Adobe Flash:");
+                versions = new ArrayList<DefaultArtifactVersion>(
+                        retriever.getAvailableVersions(SdkType.FLASH).keySet());
+                Collections.sort(versions);
+                for(DefaultArtifactVersion version : versions) {
+                    System.out.println(" - " + version.toString());
+                }
+                System.out.println();
+
+                System.out.println("Adobe AIR:");
+                Map<DefaultArtifactVersion, Collection<PlatformType>> versionData =
+                        retriever.getAvailableVersions(SdkType.AIR);
+                versions = new ArrayList<DefaultArtifactVersion>(versionData.keySet());
+                Collections.sort(versions);
+                for(DefaultArtifactVersion version : versions) {
+                    StringBuilder sb = new StringBuilder();
+                    sb.append(" - ").append(version.toString()).append(" (");
+                    boolean firstOption = true;
+                    for(PlatformType platformType : versionData.get(version)) {
+                        if(!firstOption) {
+                            sb.append(", ");
+                        }
+                        sb.append(platformType.name());
+                        firstOption = false;
+                    }
+                    sb.append(")");
+                    System.out.println(sb.toString());
+                }
+            }
+
+            // Handle the downloading of atifacts.
+            if(cmd.getArgList().contains(COMMAND_DOWNLOAD)) {
+                System.out.println("-----------------------------------------------");
+                System.out.println("- Downloading");
+                System.out.println("-----------------------------------------------");
+
+                DownloadRetriever retriever = new DownloadRetriever();
+
+                String flexVersion = cmd.getOptionValue(OPTION_FLEX_VERSION, null);
+                if(flexVersion != null) {
+                    System.out.println("- Downloading Flex SDK version: " + flexVersion +
+                            " to directory: " + fdkDir.getAbsolutePath());
+                    File fdkDownloadDirectory = retriever.retrieve(SdkType.FLEX, flexVersion);
+                    // Unpack the archive to the FDK directory.
+                    mergeDirectories(fdkDownloadDirectory, fdkDir);
+
+                    // Add the swfobject files.
+                    File swfObjectDirectory = retriever.retrieve(SdkType.SWFOBJECT);
+                    mergeDirectories(swfObjectDirectory, fdkDir);
+                }
+
+                String flashVersions = cmd.getOptionValue(OPTION_FLASH_VERSIONS, "");
+                if(!flashVersions.isEmpty()) {
+                    for(String flashVersion : flashVersions.split(",")) {
+                        System.out.println("- Downloading Flash SDK version: " + flashVersion +
+                                " to directory: " + fdkDir.getAbsolutePath());
+                        File flashDownloadDiretory = retriever.retrieve(SdkType.FLASH, flashVersion);
+                        // Integrate the download into  the FDK directory.
+                        mergeDirectories(flashDownloadDiretory, fdkDir);
+                    }
+                }
+
+                String airVersion = cmd.getOptionValue(OPTION_AIT_VERSION, "");
+                if(!airVersion.isEmpty()) {
+                    for(PlatformType platformType : platforms) {
+                        System.out.println("- Downloading Air SDK version: " + airVersion +
+                                " and platform " + platformType.name() +
+                                " to directory: " + fdkDir.getAbsolutePath());
+                        File airDownloadDirectory = retriever.retrieve(SdkType.AIR, airVersion, platformType);
+                        // Integrate the download into the FDK directory.
+                        mergeDirectories(airDownloadDirectory, fdkDir);
+                    }
+                }
+
+                if(cmd.hasOption(OPTION_FONTKIT)) {
+                    System.out.println("- Downloading Flex Fontkit libraries" +
+                            " to directory: " + fdkDir.getAbsolutePath());
+                    File fontkitDownloadDirectory = retriever.retrieve(SdkType.FONTKIT);
+                    // Integrate the download into the FDK directory.
+                    mergeDirectories(fontkitDownloadDirectory, fdkDir);
+                }
+
+                System.out.println("Finished downloads.");
+            }
+
+            // Handle the conversion.
+            if(cmd.getArgList().contains(COMMAND_CONVERT)) {
+                System.out.println("-----------------------------------------------");
+                System.out.println("- Conversion");
+                System.out.println("-----------------------------------------------");
+
+                System.out.println("- Converting Flex SDK from " + fdkDir.getAbsolutePath() +
+                        " to " + mavenDir.getAbsolutePath());
+                FlexConverter flexConverter = new FlexConverter(fdkDir, mavenDir);
+                flexConverter.convert();
+
+                System.out.println("- Converting Flash SDKs from " + fdkDir.getAbsolutePath() +
+                        " to " + mavenDir.getAbsolutePath());
+                FlashConverter flashConverter = new FlashConverter(fdkDir, mavenDir);
+                flashConverter.convert();
+
+                System.out.println("- Converting Air SDK from " + fdkDir.getAbsolutePath() +
+                        " to " + mavenDir.getAbsolutePath());
+                AirConverter airConverter = new AirConverter(fdkDir, mavenDir);
+                airConverter.convert();
+
+                System.out.println("- Converting Fontkit libraries from " + fdkDir.getAbsolutePath() +
+                        " to " + mavenDir.getAbsolutePath());
+                FontkitConverter fontkitConverter = new FontkitConverter(fdkDir, mavenDir);
+                fontkitConverter.convert();
+
+                System.out.println("- Converting Wrappers from " + fdkDir.getAbsolutePath() +
+                        " to " + mavenDir.getAbsolutePath());
+                WrapperConverter wrapperConverter = new WrapperConverter(fdkDir, mavenDir);
+                wrapperConverter.convert();
+
+                System.out.println("Finished conversion.");
+            }
+
+            // Handle the deployment.
+            if(cmd.getArgList().contains(COMMAND_DEPLOY)) {
+                System.out.println("-----------------------------------------------");
+                System.out.println("- Deployment");
+                System.out.println("-----------------------------------------------");
+
+                if(!cmd.hasOption(OPTION_REPO_URL)) {
+                    System.err.println("Parameter 'repoUrl' required for task 'deploy'.");
+                    System.exit(1);
+                }
+
+                String repoUrl = cmd.getOptionValue(OPTION_REPO_URL);
+                String repoUsername = cmd.getOptionValue(OPTION_REPO_USERNAME, null);
+                String repoPassword = cmd.getOptionValue(OPTION_REPO_PASSWORD, null);
+
+                System.out.println("- Deploying libraries to " + repoUrl + " from " + mavenDir.getAbsolutePath());
+
+                AetherDeployer deployer = new AetherDeployer(mavenDir, repoUrl, repoUsername, repoPassword);
+                deployer.deploy();
+
+                System.out.println("Finished deploying.");
+            }
+            System.out.println("-----------------------------------------------");
+        } catch (ParseException e) {
+            System.err.println("Parsing failed. Reason: " + e.getMessage());
+            printHelp(options);
+        }
+    }
+
+    protected static void printHelp(Options options) {
+        String headerText = "Commands: \n" +
+                "If the parameters 'fdkDir' and 'mavenDir' are not specified, the Converter creates two temporary " +
+                "directories in your systems temp directory and uses these for the follwoing commands.\n" +
+                " - list:\nList all available versions and platforms (for download)\n" +
+                " - download:\nDownload the selected versions of FDK parts specified by 'flexVersion', " +
+                "'flashVersions', 'airVersion' and 'fontkit' and creates an FDK in the directory specified by " +
+                "'fdkDir'. If 'airVersion' is specified, the 'platforms' parameter specifies the platforms for which " +
+                "the given AIR SDK should be downloaded, if not specified the current systems platform is used. \n" +
+                " - convert:\nConvert the FDK located in 'fdkDir' into a mavenized form at 'mavenDir'.\n" +
+                " - deploy:\nDeploy the maven artifacts located in 'mavenDir', to the remote maven repository " +
+                "specified with 'repoUrl'. If the 'repoUsername' and 'repoPassword' parameters are specified, use " +
+                "these credentials for authenticating at the remote system.\n" +
+                "Options:";
+
+        HelpFormatter helpFormatter = new HelpFormatter();
+        helpFormatter.printHelp("java -jar apache-flex-sdk-converter.jar [list] [-fdkDir <fdkDir>] " +
+                        "[-mavenDir <mavenDir>] [[-flexVersion <version>] [-flashVersions <version(s)>] " +
+                        "[-airVersion <version> [-platforms <platform(s)>]] [-fontkit] download] [convert] " +
+                        "[-repoUrl <url> [-repoUsername <username> -repoPassword <password>] deploy]",
+                headerText, options, "");
+    }
+
+    protected static File getTempDir(String prefix) throws IOException {
+        File tempFile = File.createTempFile(prefix, ".TMP");
+        tempFile.delete();
+        File tempDir = new File(tempFile.getParentFile(),
+                tempFile.getName().substring(0, tempFile.getName().length() - 4));
+        if(!tempDir.exists()) {
+            tempDir.mkdirs();
+        }
+        return tempDir;
+    }
+
+    protected static void mergeDirectories(File sourceDir, File targetDir) throws IOException {
+        FileUtils.copyDirectory(sourceDir, targetDir);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/657a7def/flex-maven-tools/mavenizer/converters/air/pom.xml
----------------------------------------------------------------------
diff --git a/flex-maven-tools/mavenizer/converters/air/pom.xml b/flex-maven-tools/mavenizer/converters/air/pom.xml
new file mode 100644
index 0000000..88d61aa
--- /dev/null
+++ b/flex-maven-tools/mavenizer/converters/air/pom.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.flex.utilities.converter</groupId>
+        <artifactId>converters</artifactId>
+        <version>1.0.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>air-converter</artifactId>
+    <version>1.0.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.flex.utilities.converter</groupId>
+            <artifactId>base-converter</artifactId>
+            <version>1.0.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+</project>

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/657a7def/flex-maven-tools/mavenizer/converters/air/src/main/java/org/apache/flex/utilities/converter/air/AirConverter.java
----------------------------------------------------------------------
diff --git a/flex-maven-tools/mavenizer/converters/air/src/main/java/org/apache/flex/utilities/converter/air/AirConverter.java b/flex-maven-tools/mavenizer/converters/air/src/main/java/org/apache/flex/utilities/converter/air/AirConverter.java
new file mode 100644
index 0000000..d1dbbfc
--- /dev/null
+++ b/flex-maven-tools/mavenizer/converters/air/src/main/java/org/apache/flex/utilities/converter/air/AirConverter.java
@@ -0,0 +1,266 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.flex.utilities.converter.air;
+
+import org.apache.flex.utilities.converter.BaseConverter;
+import org.apache.flex.utilities.converter.Converter;
+import org.apache.flex.utilities.converter.exceptions.ConverterException;
+import org.apache.flex.utilities.converter.model.MavenArtifact;
+
+import java.io.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * Created by cdutz on 22.04.2014.
+ */
+public class AirConverter extends BaseConverter implements Converter {
+
+    protected String airSdkVersion;
+
+    /**
+     * @param rootSourceDirectory Path to the root of the original AIR SDK.
+     * @param rootTargetDirectory Path to the root of the directory where the Maven artifacts should be generated to.
+     * @throws ConverterException
+     */
+    public AirConverter(File rootSourceDirectory, File rootTargetDirectory) throws ConverterException {
+        super(rootSourceDirectory, rootTargetDirectory);
+
+        // Get the version of the current air sdk.
+        this.airSdkVersion = getAirVersion(rootSourceDirectory);
+    }
+
+    /**
+     * Entry point for generating the Maven artifacts for an AIR SDK.
+     *
+     * @throws ConverterException
+     */
+    @Override
+    protected void processDirectory() throws ConverterException {
+        if((airSdkVersion == null) || !rootSourceDirectory.exists() || !rootSourceDirectory.isDirectory()) {
+            System.out.println("Skipping AIR SDK generation.");
+            return;
+        }
+
+        generateCompilerArtifacts();
+        generateRuntimeArtifacts();
+        generateFrameworkArtifacts();
+    }
+
+    /**
+     * This method generates those artifacts that resemble the compiler part of the AIR SDK.
+     *
+     * @throws ConverterException
+     */
+    protected void generateCompilerArtifacts() throws ConverterException {
+        // Create the root artifact.
+        final MavenArtifact compiler = new MavenArtifact();
+        compiler.setGroupId("com.adobe.air");
+        compiler.setArtifactId("compiler");
+        compiler.setVersion(airSdkVersion);
+        compiler.setPackaging("pom");
+
+        // Create a list of all libs that should belong to the AIR SDK compiler.
+        final File directory = new File(rootSourceDirectory, "lib");
+        if(!directory.exists() || !directory.isDirectory()) {
+            throw new ConverterException("Compiler directory does not exist.");
+        }
+        final List<File> files = new ArrayList<File>();
+        files.addAll(Arrays.asList(directory.listFiles(new AirCompilerFilter())));
+
+        // Generate artifacts for every jar in the input directories.
+        for(final File sourceFile : files) {
+            final MavenArtifact artifact = resolveArtifact(sourceFile, "com.adobe.air.compiler", airSdkVersion);
+            compiler.addDependency(artifact);
+        }
+
+        // Write this artifact to file.
+        writeArtifact(compiler);
+    }
+
+    /**
+     * This method generates those artifacts that resemble the runtime part of the AIR SDK.
+     *
+     * @throws ConverterException
+     */
+    protected void generateRuntimeArtifacts() throws ConverterException {
+        // Create the root artifact.
+        final MavenArtifact runtime = new MavenArtifact();
+        runtime.setGroupId("com.adobe.air");
+        runtime.setArtifactId("runtime");
+        runtime.setVersion(airSdkVersion);
+        runtime.setPackaging("pom");
+
+        // Create a list of all libs that should belong to the AIR SDK runtime.
+        final File directory = new File(rootSourceDirectory, "bin");
+        if(!directory.exists() || !directory.isDirectory()) {
+            throw new ConverterException("Runtime directory does not exist.");
+        }
+        final List<File> files = new ArrayList<File>();
+        files.addAll(Arrays.asList(directory.listFiles(new AirRuntimeFilter())));
+
+        // Generate artifacts for every jar in the input directories (Actually this is only one file).
+        for(final File sourceFile : files) {
+            final MavenArtifact artifact = resolveArtifact(sourceFile, "com.adobe.air.runtime", airSdkVersion);
+            runtime.addDependency(artifact);
+        }
+
+        // Zip up the AIR runtime directory.
+        final MavenArtifact airRuntimeArtifact = generateAirRuntimeArtifact(rootSourceDirectory);
+        if(airRuntimeArtifact != null) {
+            runtime.addDependency(airRuntimeArtifact);
+        }
+
+        // Write this artifact to file.
+        writeArtifact(runtime);
+    }
+
+    /**
+     * This method generates those artifacts that resemble the framework part of the AIR SDK.
+     *
+     * @throws ConverterException
+     */
+    protected void generateFrameworkArtifacts() throws ConverterException {
+        // Create the root artifact.
+        final MavenArtifact framework = new MavenArtifact();
+        framework.setGroupId("com.adobe.air");
+        framework.setArtifactId("framework");
+        framework.setVersion(airSdkVersion);
+        framework.setPackaging("pom");
+
+        // Create a list of all libs that should belong to the AIR SDK framework.
+        final File directory =
+                new File(rootSourceDirectory, "frameworks" + File.separator + "libs" + File.separator + "air");
+        if(!directory.exists() || !directory.isDirectory()) {
+            throw new ConverterException("Framework directory does not exist.");
+        }
+        final List<File> files = new ArrayList<File>();
+        files.addAll(Arrays.asList(directory.listFiles(new AirFrameworkFilter())));
+
+        // Generate artifacts for every jar in the input directories.
+        for(final File sourceFile : files) {
+            final MavenArtifact artifact = resolveArtifact(sourceFile, "com.adobe.air.framework", airSdkVersion);
+            framework.addDependency(artifact);
+        }
+
+        // Write this artifact to file.
+        writeArtifact(framework);
+    }
+
+    ///////////////////////////////////////////////////////////////////////////////////////////////////
+    //
+    //   Utility methods
+    //
+    ///////////////////////////////////////////////////////////////////////////////////////////////////
+
+    protected MavenArtifact generateAirRuntimeArtifact(File rootDirectory) throws ConverterException {
+        final MavenArtifact airRuntimeArtifact = new MavenArtifact();
+        airRuntimeArtifact.setGroupId("com.adobe.air.runtime");
+        airRuntimeArtifact.setArtifactId("air-runtime");
+        airRuntimeArtifact.setVersion(airSdkVersion);
+        airRuntimeArtifact.setPackaging("zip");
+
+        final File runtimeRoot = new File(rootDirectory, "runtimes.air".replace(".", File.separator));
+        final File[] platforms = runtimeRoot.listFiles();
+        if(platforms != null) {
+            for (final File platform : platforms) {
+                if (!platform.isDirectory()) {
+                   continue;
+                }
+                final String platformName = platform.getName();
+                try {
+                   final File zip = File.createTempFile("AirRuntime-" + platformName + "-" + airSdkVersion, "zip");
+                   generateZip(platform.listFiles(), zip);
+                   airRuntimeArtifact.addBinaryArtifact(platformName, zip);
+                } catch (IOException e) {
+                   throw new ConverterException("Error creating runtime zip.", e);
+                }
+            }
+        } else {
+            return null;
+        }
+
+        writeArtifact(airRuntimeArtifact);
+        return airRuntimeArtifact;
+    }
+
+   /**
+     * Get the version of an AIR SDK from the content of the SDK directory.
+     *
+     * @return version string for the current AIR SDK
+     */
+    protected String getAirVersion(File rootDirectory) throws ConverterException {
+        // All AIR SDKs contain a text file "AIR SDK Readme.txt" which contains a
+        // Version string in the first line. Newer SDKs contain an additional "airsdk.xml"
+        // which would be easier to parse, but as all SDKs contain the text-file, we'll
+        // stick to that for now.
+
+        final File sdkDescriptor = new File(rootDirectory, "AIR SDK Readme.txt");
+
+        // If the descriptor is not present, return null as this FDK directory doesn't
+        // seem to contain a AIR SDK.
+        if(!sdkDescriptor.exists() || !sdkDescriptor.isFile()) {
+            return null;
+        }
+
+        DataInputStream in = null;
+        try {
+            final FileInputStream descriptorInputStream = new FileInputStream(sdkDescriptor);
+            in = new DataInputStream(descriptorInputStream);
+            final BufferedReader br = new BufferedReader(new InputStreamReader(in));
+            final String strLine = br.readLine();
+            return strLine.substring("Adobe AIR ".length(), strLine.indexOf(" ", "Adobe AIR ".length()));
+        } catch (Exception e) {
+            throw new ConverterException("Error getting AIR version.", e);
+        } finally {
+            if (in != null) {
+                try {
+                    in.close();
+                } catch (IOException ioe) {
+                    // Ignore.
+                }
+            }
+        }
+    }
+
+    public static class AirCompilerFilter implements FilenameFilter {
+        public boolean accept(File dir, String name) {
+            return name.equals("adt.jar");
+        }
+    }
+
+    public static class AirRuntimeFilter implements FilenameFilter {
+        public boolean accept(File dir, String name) {
+            return name.equalsIgnoreCase("adl.exe");
+        }
+    }
+
+    public static class AirFrameworkFilter implements FilenameFilter {
+        public boolean accept(File dir, String name) {
+            return name.equals("aircore.swc") || name.equals("airglobal.swc") ||
+                    name.equals("applicationupdater.swc") || name.equals("applicationupdater_ui.swc") ||
+                    name.equals("servicemonitor.swc");
+        }
+    }
+
+    public static void main(String[] args) throws Exception {
+        AirConverter converter = new AirConverter(new File(args[0]), new File(args[1]));
+        converter.convert();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/657a7def/flex-maven-tools/mavenizer/converters/base/pom.xml
----------------------------------------------------------------------
diff --git a/flex-maven-tools/mavenizer/converters/base/pom.xml b/flex-maven-tools/mavenizer/converters/base/pom.xml
new file mode 100644
index 0000000..5a1b89c
--- /dev/null
+++ b/flex-maven-tools/mavenizer/converters/base/pom.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.flex.utilities.converter</groupId>
+        <artifactId>converters</artifactId>
+        <version>1.0.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>base-converter</artifactId>
+    <version>1.0.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.sun.jersey</groupId>
+            <artifactId>jersey-client</artifactId>
+            <version>1.12</version>
+        </dependency>
+        <dependency>
+            <groupId>org.codehaus.jettison</groupId>
+            <artifactId>jettison</artifactId>
+            <version>1.3.1</version>
+        </dependency>
+        <dependency>
+            <groupId>org.freemarker</groupId>
+            <artifactId>freemarker</artifactId>
+            <version>2.3.22</version>
+        </dependency>
+    </dependencies>
+
+</project>