You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by cd...@apache.org on 2016/04/26 16:54:22 UTC
git commit: [flex-falcon] [refs/heads/develop] - - Refactored the
compiler mojos (as and js) to utilize the FlexToolGroups (ASJS being the
default) - Enforced the FlexToolGroup "Falcon" for all externs - Added the
TweenJS lib to the build
Repository: flex-falcon
Updated Branches:
refs/heads/develop 818397220 -> 704d6324b
- Refactored the compiler mojos (as and js) to utilize the FlexToolGroups (ASJS being the default)
- Enforced the FlexToolGroup "Falcon" for all externs
- Added the TweenJS lib to the build
Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/704d6324
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/704d6324
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/704d6324
Branch: refs/heads/develop
Commit: 704d6324b53acc2a003779dbb8c38abc16606752
Parents: 8183972
Author: Christofer Dutz <ch...@codecentric.de>
Authored: Tue Apr 26 16:54:14 2016 +0200
Committer: Christofer Dutz <ch...@codecentric.de>
Committed: Tue Apr 26 16:54:14 2016 +0200
----------------------------------------------------------------------
externs/GCL/pom.xml | 3 +
externs/cordova/pom.xml | 3 +
externs/createjs/pom.xml | 55 +++---
.../src/main/config/compile-as-config.xml | 12 +-
.../createjs/src/main/config/externc-config.xml | 82 ++++----
externs/google_maps/pom.xml | 3 +
externs/jasmine/pom.xml | 3 +
externs/jquery/pom.xml | 3 +
externs/js/pom.xml | 3 +
externs/node/pom.xml | 3 +
.../flex/maven/flexjs/BaseCompileMojo.java | 189 +++++++++++++++++++
.../apache/flex/maven/flexjs/CompileASMojo.java | 182 ++----------------
.../apache/flex/maven/flexjs/CompileJSMojo.java | 68 ++-----
13 files changed, 329 insertions(+), 280 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/704d6324/externs/GCL/pom.xml
----------------------------------------------------------------------
diff --git a/externs/GCL/pom.xml b/externs/GCL/pom.xml
index fcddaa4..0854ced 100644
--- a/externs/GCL/pom.xml
+++ b/externs/GCL/pom.xml
@@ -40,6 +40,9 @@
<artifactId>flexjs-maven-plugin</artifactId>
<version>0.6.0-SNAPSHOT</version>
<extensions>true</extensions>
+ <configuration>
+ <toolGroupName>Falcon</toolGroupName>
+ </configuration>
<dependencies>
<dependency>
<groupId>org.apache.flex.flexjs.compiler</groupId>
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/704d6324/externs/cordova/pom.xml
----------------------------------------------------------------------
diff --git a/externs/cordova/pom.xml b/externs/cordova/pom.xml
index 9a35622..225eddd 100644
--- a/externs/cordova/pom.xml
+++ b/externs/cordova/pom.xml
@@ -44,6 +44,9 @@
<artifactId>flexjs-maven-plugin</artifactId>
<version>0.6.0-SNAPSHOT</version>
<extensions>true</extensions>
+ <configuration>
+ <toolGroupName>Falcon</toolGroupName>
+ </configuration>
<dependencies>
<dependency>
<groupId>org.apache.flex.flexjs.compiler</groupId>
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/704d6324/externs/createjs/pom.xml
----------------------------------------------------------------------
diff --git a/externs/createjs/pom.xml b/externs/createjs/pom.xml
index 05642f8..8f2251c 100644
--- a/externs/createjs/pom.xml
+++ b/externs/createjs/pom.xml
@@ -35,16 +35,17 @@
<properties>
<createjs.version>0.8.0</createjs.version>
+ <tweenjs.version>0.6.2</tweenjs.version>
</properties>
<build>
<plugins>
- <!-- Download easejs/createjs form GitHub and unpack it into the target directory -->
<plugin>
<groupId>com.googlecode.maven-download-plugin</groupId>
<artifactId>download-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
+ <!-- Download easejs/createjs form GitHub and unpack it into the target directory -->
<execution>
<id>get-createjs</id>
<phase>validate</phase>
@@ -55,11 +56,26 @@
<url>https://github.com/CreateJS/EaselJS/archive/${createjs.version}.zip</url>
<unpack>true</unpack>
<outputFileName>createjs-${createjs.version}.zip</outputFileName>
- <outputDirectory>${project.build.directory}</outputDirectory>
+ <outputDirectory>${project.build.directory}/downloads</outputDirectory>
+ </configuration>
+ </execution>
+ <!-- Download TweenJS form GitHub and unpack it into the target directory -->
+ <execution>
+ <id>get-tweenjs</id>
+ <phase>validate</phase>
+ <goals>
+ <goal>wget</goal>
+ </goals>
+ <configuration>
+ <url>https://github.com/CreateJS/TweenJS/archive/${tweenjs.version}.zip</url>
+ <unpack>true</unpack>
+ <outputFileName>tweenjs-${tweenjs.version}.zip</outputFileName>
+ <outputDirectory>${project.build.directory}/downloads</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
+
<plugin>
<groupId>org.apache.flex.flexjs.compiler</groupId>
<artifactId>compiler-build-tools</artifactId>
@@ -102,6 +118,11 @@
<replace-regexp-operation><match>createjs.MovieClip.prototype.labels;</match><replace/></replace-regexp-operation>
<!-- Remove the closing brackets at the end -->
<replace-regexp-operation><match>\}(\)\(|\(\))\);</match><replace/></replace-regexp-operation>
+ <!-- Fixes needed by tweenjs -->
+ <replace-regexp-operation><match>@param data</match><replace>@param \{Object\} data</replace></replace-regexp-operation>
+ <replace-regexp-operation><match>@param ratio</match><replace>@param \{Number\} ratio</replace></replace-regexp-operation>
+ <replace-regexp-operation><match>@param target</match><replace>@param \{Object\} target</replace></replace-regexp-operation>
+ <replace-regexp-operation><match>\{any\}</match><replace>\{Object\}</replace></replace-regexp-operation>
</operations>
</configuration>
</execution>
@@ -113,7 +134,7 @@
</goals>
<configuration>
<includes>
- <include>createjs/utils/Ticker.js</include>
+ <include>EaselJS-${createjs.version}/src/createjs/utils/Ticker.js</include>
</includes>
<operations>
<cut-operation>
@@ -132,7 +153,7 @@
</goals>
<configuration>
<includes>
- <include>easeljs/display/Graphics.js</include>
+ <include>EaselJS-${createjs.version}/src/easeljs/display/Graphics.js</include>
</includes>
<operations>
<cut-operation>
@@ -142,29 +163,14 @@
</operations>
</configuration>
</execution>
- <!-- It seems that excluding the files doesn't work, so we have to delete them -->
- <!--execution>
- <id>pre-process-delete-unused</id>
- <phase>validate</phase>
- <goals>
- <goal>pre-process-sources</goal>
- </goals>
- <configuration>
- <includes>
- <include>easeljs/version.js</include>
- <include>easeljs/version_movieclip.js</include>
- </includes>
- <operations>
- <delete-file-operation/>
- </operations>
- </configuration>
- </execution-->
</executions>
<configuration>
<!-- Take the JavaScript from the previously downloaded and unpacked distribution -->
- <downloadesSourceDirectory>${project.build.directory}/EaselJS-${createjs.version}/src</downloadesSourceDirectory>
+ <downloadesSourceDirectory>${project.build.directory}/downloads</downloadesSourceDirectory>
<includes>
- <include>**/*.js</include>
+ <include>EaselJS-${createjs.version}/src/createjs/**/*.js</include>
+ <include>EaselJS-${createjs.version}/src/easeljs/**/*.js</include>
+ <include>TweenJS-${tweenjs.version}/src/tweenjs/**/*.js</include>
</includes>
</configuration>
</plugin>
@@ -173,6 +179,9 @@
<artifactId>flexjs-maven-plugin</artifactId>
<version>0.6.0-SNAPSHOT</version>
<extensions>true</extensions>
+ <configuration>
+ <toolGroupName>Falcon</toolGroupName>
+ </configuration>
<dependencies>
<dependency>
<groupId>org.apache.flex.flexjs.compiler</groupId>
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/704d6324/externs/createjs/src/main/config/compile-as-config.xml
----------------------------------------------------------------------
diff --git a/externs/createjs/src/main/config/compile-as-config.xml b/externs/createjs/src/main/config/compile-as-config.xml
index 1f946ac..3abbb9a 100644
--- a/externs/createjs/src/main/config/compile-as-config.xml
+++ b/externs/createjs/src/main/config/compile-as-config.xml
@@ -81,8 +81,16 @@
<path>../src/main/javascript/missing.js</path>
</include-file>
<include-file>
- <name>externs/*</name>
- <path>EaselJS-0.8.0/src</path>
+ <name>externs/createjs/*</name>
+ <path>downloads/EaselJS-0.8.0/src/createjs</path>
+ </include-file>
+ <include-file>
+ <name>externs/easeljs/*</name>
+ <path>downloads/EaselJS-0.8.0/src/easeljs</path>
+ </include-file>
+ <include-file>
+ <name>externs/tweenjs/*</name>
+ <path>downloads/TweenJS-0.6.2/src/tweenjs</path>
</include-file>
<!--
<include-file>
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/704d6324/externs/createjs/src/main/config/externc-config.xml
----------------------------------------------------------------------
diff --git a/externs/createjs/src/main/config/externc-config.xml b/externs/createjs/src/main/config/externc-config.xml
index 78b21aa..bcc9f05 100644
--- a/externs/createjs/src/main/config/externc-config.xml
+++ b/externs/createjs/src/main/config/externc-config.xml
@@ -60,47 +60,47 @@
</compiler>
<external>
- <path-element>../../../target/EaselJS-0.8.0/src/createjs/events/Event.js</path-element>
- <path-element>../../../target/EaselJS-0.8.0/src/createjs/events/EventDispatcher.js</path-element>
- <path-element>../../../target/EaselJS-0.8.0/src/createjs/utils/extend.js</path-element>
- <path-element>../../../target/EaselJS-0.8.0/src/createjs/utils/indexof.js</path-element>
- <path-element>../../../target/EaselJS-0.8.0/src/createjs/utils/promote.js</path-element>
- <path-element>../../../target/EaselJS-0.8.0/src/createjs/utils/Ticker.js</path-element>
- <path-element>../../../target/EaselJS-0.8.0/src/easeljs/display/Bitmap.js</path-element>
- <path-element>../../../target/EaselJS-0.8.0/src/easeljs/display/BitmapText.js</path-element>
- <path-element>../../../target/EaselJS-0.8.0/src/easeljs/display/Container.js</path-element>
- <path-element>../../../target/EaselJS-0.8.0/src/easeljs/display/DisplayObject.js</path-element>
- <path-element>../../../target/EaselJS-0.8.0/src/easeljs/display/DOMElement.js</path-element>
- <path-element>../../../target/EaselJS-0.8.0/src/easeljs/display/Graphics.js</path-element>
- <path-element>../../../target/EaselJS-0.8.0/src/easeljs/display/MovieClip.js</path-element>
- <path-element>../../../target/EaselJS-0.8.0/src/easeljs/display/Shadow.js</path-element>
- <path-element>../../../target/EaselJS-0.8.0/src/easeljs/display/Shape.js</path-element>
- <path-element>../../../target/EaselJS-0.8.0/src/easeljs/display/Sprite.js</path-element>
- <path-element>../../../target/EaselJS-0.8.0/src/easeljs/display/SpriteContainer.js</path-element>
- <path-element>../../../target/EaselJS-0.8.0/src/easeljs/display/SpriteSheet.js</path-element>
- <path-element>../../../target/EaselJS-0.8.0/src/easeljs/display/SpriteStage.js</path-element>
- <path-element>../../../target/EaselJS-0.8.0/src/easeljs/display/Stage.js</path-element>
- <path-element>../../../target/EaselJS-0.8.0/src/easeljs/display/Text.js</path-element>
- <path-element>../../../target/EaselJS-0.8.0/src/easeljs/events/MouseEvent.js</path-element>
- <path-element>../../../target/EaselJS-0.8.0/src/easeljs/filters/AlphaMapFilter.js</path-element>
- <path-element>../../../target/EaselJS-0.8.0/src/easeljs/filters/AlphaMaskFilter.js</path-element>
- <path-element>../../../target/EaselJS-0.8.0/src/easeljs/filters/BlurFilter.js</path-element>
- <path-element>../../../target/EaselJS-0.8.0/src/easeljs/filters/ColorFilter.js</path-element>
- <path-element>../../../target/EaselJS-0.8.0/src/easeljs/filters/ColorMatrix.js</path-element>
- <path-element>../../../target/EaselJS-0.8.0/src/easeljs/filters/ColorMatrixFilter.js</path-element>
- <path-element>../../../target/EaselJS-0.8.0/src/easeljs/filters/Filter.js</path-element>
- <path-element>../../../target/EaselJS-0.8.0/src/easeljs/geom/DisplayProps.js</path-element>
- <path-element>../../../target/EaselJS-0.8.0/src/easeljs/geom/Matrix2D.js</path-element>
- <path-element>../../../target/EaselJS-0.8.0/src/easeljs/geom/Point.js</path-element>
- <path-element>../../../target/EaselJS-0.8.0/src/easeljs/geom/Rectangle.js</path-element>
- <path-element>../../../target/EaselJS-0.8.0/src/easeljs/ui/ButtonHelper.js</path-element>
- <path-element>../../../target/EaselJS-0.8.0/src/easeljs/ui/Touch.js</path-element>
- <path-element>../../../target/EaselJS-0.8.0/src/easeljs/utils/SpriteSheetBuilder.js</path-element>
- <path-element>../../../target/EaselJS-0.8.0/src/easeljs/utils/SpriteSheetUtils.js</path-element>
- <path-element>../../../target/EaselJS-0.8.0/src/easeljs/utils/UID.js</path-element>
- <path-element>../../../target/EaselJS-0.8.0/src/tweenjs/Ease.js</path-element>
- <path-element>../../../target/EaselJS-0.8.0/src/tweenjs/Timeline.js</path-element>
- <path-element>../../../target/EaselJS-0.8.0/src/tweenjs/Tween.js</path-element>
+ <path-element>../../../target/downloads/EaselJS-0.8.0/src/createjs/events/Event.js</path-element>
+ <path-element>../../../target/downloads/EaselJS-0.8.0/src/createjs/events/EventDispatcher.js</path-element>
+ <path-element>../../../target/downloads/EaselJS-0.8.0/src/createjs/utils/extend.js</path-element>
+ <path-element>../../../target/downloads/EaselJS-0.8.0/src/createjs/utils/indexof.js</path-element>
+ <path-element>../../../target/downloads/EaselJS-0.8.0/src/createjs/utils/promote.js</path-element>
+ <path-element>../../../target/downloads/EaselJS-0.8.0/src/createjs/utils/Ticker.js</path-element>
+ <path-element>../../../target/downloads/EaselJS-0.8.0/src/easeljs/display/Bitmap.js</path-element>
+ <path-element>../../../target/downloads/EaselJS-0.8.0/src/easeljs/display/BitmapText.js</path-element>
+ <path-element>../../../target/downloads/EaselJS-0.8.0/src/easeljs/display/Container.js</path-element>
+ <path-element>../../../target/downloads/EaselJS-0.8.0/src/easeljs/display/DisplayObject.js</path-element>
+ <path-element>../../../target/downloads/EaselJS-0.8.0/src/easeljs/display/DOMElement.js</path-element>
+ <path-element>../../../target/downloads/EaselJS-0.8.0/src/easeljs/display/Graphics.js</path-element>
+ <path-element>../../../target/downloads/EaselJS-0.8.0/src/easeljs/display/MovieClip.js</path-element>
+ <path-element>../../../target/downloads/EaselJS-0.8.0/src/easeljs/display/Shadow.js</path-element>
+ <path-element>../../../target/downloads/EaselJS-0.8.0/src/easeljs/display/Shape.js</path-element>
+ <path-element>../../../target/downloads/EaselJS-0.8.0/src/easeljs/display/Sprite.js</path-element>
+ <path-element>../../../target/downloads/EaselJS-0.8.0/src/easeljs/display/SpriteContainer.js</path-element>
+ <path-element>../../../target/downloads/EaselJS-0.8.0/src/easeljs/display/SpriteSheet.js</path-element>
+ <path-element>../../../target/downloads/EaselJS-0.8.0/src/easeljs/display/SpriteStage.js</path-element>
+ <path-element>../../../target/downloads/EaselJS-0.8.0/src/easeljs/display/Stage.js</path-element>
+ <path-element>../../../target/downloads/EaselJS-0.8.0/src/easeljs/display/Text.js</path-element>
+ <path-element>../../../target/downloads/EaselJS-0.8.0/src/easeljs/events/MouseEvent.js</path-element>
+ <path-element>../../../target/downloads/EaselJS-0.8.0/src/easeljs/filters/AlphaMapFilter.js</path-element>
+ <path-element>../../../target/downloads/EaselJS-0.8.0/src/easeljs/filters/AlphaMaskFilter.js</path-element>
+ <path-element>../../../target/downloads/EaselJS-0.8.0/src/easeljs/filters/BlurFilter.js</path-element>
+ <path-element>../../../target/downloads/EaselJS-0.8.0/src/easeljs/filters/ColorFilter.js</path-element>
+ <path-element>../../../target/downloads/EaselJS-0.8.0/src/easeljs/filters/ColorMatrix.js</path-element>
+ <path-element>../../../target/downloads/EaselJS-0.8.0/src/easeljs/filters/ColorMatrixFilter.js</path-element>
+ <path-element>../../../target/downloads/EaselJS-0.8.0/src/easeljs/filters/Filter.js</path-element>
+ <path-element>../../../target/downloads/EaselJS-0.8.0/src/easeljs/geom/DisplayProps.js</path-element>
+ <path-element>../../../target/downloads/EaselJS-0.8.0/src/easeljs/geom/Matrix2D.js</path-element>
+ <path-element>../../../target/downloads/EaselJS-0.8.0/src/easeljs/geom/Point.js</path-element>
+ <path-element>../../../target/downloads/EaselJS-0.8.0/src/easeljs/geom/Rectangle.js</path-element>
+ <path-element>../../../target/downloads/EaselJS-0.8.0/src/easeljs/ui/ButtonHelper.js</path-element>
+ <path-element>../../../target/downloads/EaselJS-0.8.0/src/easeljs/ui/Touch.js</path-element>
+ <path-element>../../../target/downloads/EaselJS-0.8.0/src/easeljs/utils/SpriteSheetBuilder.js</path-element>
+ <path-element>../../../target/downloads/EaselJS-0.8.0/src/easeljs/utils/SpriteSheetUtils.js</path-element>
+ <path-element>../../../target/downloads/EaselJS-0.8.0/src/easeljs/utils/UID.js</path-element>
+ <path-element>../../../target/downloads/TweenJS-0.6.2/src/tweenjs/Ease.js</path-element>
+ <path-element>../../../target/downloads/TweenJS-0.6.2/src/tweenjs/Timeline.js</path-element>
+ <path-element>../../../target/downloads/TweenJS-0.6.2/src/tweenjs/Tween.js</path-element>
</external>
<as-root>../../../target/generated-sources/externc</as-root>
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/704d6324/externs/google_maps/pom.xml
----------------------------------------------------------------------
diff --git a/externs/google_maps/pom.xml b/externs/google_maps/pom.xml
index a3e4147..43b8c7a 100644
--- a/externs/google_maps/pom.xml
+++ b/externs/google_maps/pom.xml
@@ -92,6 +92,9 @@ google.maps = {};]]></replace></replace-regexp-operation>
<artifactId>flexjs-maven-plugin</artifactId>
<version>0.6.0-SNAPSHOT</version>
<extensions>true</extensions>
+ <configuration>
+ <toolGroupName>Falcon</toolGroupName>
+ </configuration>
<dependencies>
<dependency>
<groupId>org.apache.flex.flexjs.compiler</groupId>
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/704d6324/externs/jasmine/pom.xml
----------------------------------------------------------------------
diff --git a/externs/jasmine/pom.xml b/externs/jasmine/pom.xml
index c85f7e3..9a028f1 100644
--- a/externs/jasmine/pom.xml
+++ b/externs/jasmine/pom.xml
@@ -64,6 +64,9 @@
<artifactId>flexjs-maven-plugin</artifactId>
<version>0.6.0-SNAPSHOT</version>
<extensions>true</extensions>
+ <configuration>
+ <toolGroupName>Falcon</toolGroupName>
+ </configuration>
<dependencies>
<dependency>
<groupId>org.apache.flex.flexjs.compiler</groupId>
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/704d6324/externs/jquery/pom.xml
----------------------------------------------------------------------
diff --git a/externs/jquery/pom.xml b/externs/jquery/pom.xml
index c37b94b..b71dd18 100644
--- a/externs/jquery/pom.xml
+++ b/externs/jquery/pom.xml
@@ -86,6 +86,9 @@
<artifactId>flexjs-maven-plugin</artifactId>
<version>0.6.0-SNAPSHOT</version>
<extensions>true</extensions>
+ <configuration>
+ <toolGroupName>Falcon</toolGroupName>
+ </configuration>
<dependencies>
<dependency>
<groupId>org.apache.flex.flexjs.compiler</groupId>
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/704d6324/externs/js/pom.xml
----------------------------------------------------------------------
diff --git a/externs/js/pom.xml b/externs/js/pom.xml
index bd3dd0f..964b875 100644
--- a/externs/js/pom.xml
+++ b/externs/js/pom.xml
@@ -123,6 +123,9 @@
<artifactId>flexjs-maven-plugin</artifactId>
<version>0.6.0-SNAPSHOT</version>
<extensions>true</extensions>
+ <configuration>
+ <toolGroupName>Falcon</toolGroupName>
+ </configuration>
<dependencies>
<dependency>
<groupId>org.apache.flex.flexjs.compiler</groupId>
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/704d6324/externs/node/pom.xml
----------------------------------------------------------------------
diff --git a/externs/node/pom.xml b/externs/node/pom.xml
index 7233c7a..39dd3c7 100644
--- a/externs/node/pom.xml
+++ b/externs/node/pom.xml
@@ -66,6 +66,9 @@
<artifactId>flexjs-maven-plugin</artifactId>
<version>0.6.0-SNAPSHOT</version>
<extensions>true</extensions>
+ <configuration>
+ <toolGroupName>Falcon</toolGroupName>
+ </configuration>
<dependencies>
<dependency>
<groupId>org.apache.flex.flexjs.compiler</groupId>
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/704d6324/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/BaseCompileMojo.java
----------------------------------------------------------------------
diff --git a/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/BaseCompileMojo.java b/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/BaseCompileMojo.java
new file mode 100644
index 0000000..92e548f
--- /dev/null
+++ b/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/BaseCompileMojo.java
@@ -0,0 +1,189 @@
+package org.apache.flex.maven.flexjs;
+
+import org.apache.flex.maven.flexjs.types.FlexScope;
+import org.apache.flex.tools.FlexTool;
+import org.apache.flex.tools.FlexToolGroup;
+import org.apache.flex.tools.FlexToolRegistry;
+import org.apache.maven.RepositoryUtils;
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.project.*;
+import org.eclipse.aether.RepositorySystemSession;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.xml.sax.SAXException;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.xpath.*;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.Collections;
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+/**
+ * Created by christoferdutz on 22.04.16.
+ */
+public abstract class BaseCompileMojo
+ extends AbstractMojo
+{
+
+ @Parameter(defaultValue = "${project}", readonly = true)
+ protected MavenProject project;
+
+ @Parameter(defaultValue="${project.build.directory}")
+ protected File outputDirectory;
+
+ @Parameter(defaultValue = "FlexJS")
+ protected String toolGroupName;
+
+ @Parameter(readonly = true, defaultValue = "${repositorySystemSession}")
+ private RepositorySystemSession repositorySystemSession;
+
+ @Component
+ private ProjectDependenciesResolver projectDependenciesResolver;
+
+ protected abstract File getConfigFile();
+
+ protected abstract String[] getCompilerArgs(File configFile);
+
+ public void execute()
+ throws MojoExecutionException
+ {
+ File configFile = getConfigFile();
+ if(!configFile.exists()) {
+ getLog().info(" - compilation config file '" + configFile.getPath() +
+ "' not found, skipping compilation");
+ return;
+ }
+
+ // Prepare the config file.
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ try {
+ // Resolve all the dependencies.
+ Set<Artifact> resolvedDependencies = resolveDependencies();
+
+ // Parse the input document.
+ DocumentBuilder builder = factory.newDocumentBuilder();
+ Document configuration = builder.parse(new FileInputStream(configFile));
+
+ // Append the path-elements for the compile scope.
+ Set<Artifact> compileDependencies = getDependenciesForScope(resolvedDependencies, FlexScope.COMPILE);
+ outputLibraryPath(configuration, "flex-config/compiler/library-path", compileDependencies);
+
+ // Append the path-elements for the external scope.
+ Set<Artifact> externalDependencies = getDependenciesForScope(resolvedDependencies, FlexScope.EXTERNAL);
+ outputLibraryPath(configuration, "flex-config/compiler/external-library-path", externalDependencies);
+
+ // Write the modified config-file to the output directory.
+ File configFileOutput = new File(outputDirectory, configFile.getName());
+ TransformerFactory transformerFactory = TransformerFactory.newInstance();
+ Transformer transformer = transformerFactory.newTransformer();
+ DOMSource source = new DOMSource(configuration);
+ StreamResult result = new StreamResult(configFileOutput);
+ transformer.transform(source, result);
+
+ // Get the falcon tool group.
+ FlexToolRegistry toolRegistry = new FlexToolRegistry();
+ FlexToolGroup toolGroup = toolRegistry.getToolGroup(toolGroupName);
+ if(toolGroup == null) {
+ throw new MojoExecutionException("Could not find tool group: Falcon");
+ }
+
+ // Get an instance of the compiler and run the build.
+ FlexTool compc = toolGroup.getFlexTool(FlexTool.FLEX_TOOL_COMPC);
+ compc.execute(getCompilerArgs(configFileOutput));
+ } catch (ParserConfigurationException e) {
+ e.printStackTrace();
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ } catch (SAXException e) {
+ e.printStackTrace();
+ } catch (TransformerConfigurationException e) {
+ e.printStackTrace();
+ } catch (TransformerException e) {
+ e.printStackTrace();
+ }
+ }
+
+ private Set<Artifact> resolveDependencies() throws MojoExecutionException {
+ DefaultDependencyResolutionRequest dependencyResolutionRequest =
+ new DefaultDependencyResolutionRequest(project, repositorySystemSession);
+ DependencyResolutionResult dependencyResolutionResult;
+
+ try {
+ dependencyResolutionResult = projectDependenciesResolver.resolve(dependencyResolutionRequest);
+ } catch (DependencyResolutionException ex) {
+ throw new MojoExecutionException(ex.getMessage(), ex);
+ }
+
+ Set<Artifact> artifacts = new LinkedHashSet<Artifact>();
+ if (dependencyResolutionResult.getDependencyGraph() != null
+ && !dependencyResolutionResult.getDependencyGraph().getChildren().isEmpty()) {
+ RepositoryUtils.toArtifacts(artifacts, dependencyResolutionResult.getDependencyGraph().getChildren(),
+ Collections.singletonList(project.getArtifact().getId()), null);
+ }
+ return artifacts;
+ }
+
+ private Set<Artifact> getDependenciesForScope(Set<Artifact> dependencies, FlexScope scope) {
+ Set<Artifact> artifacts = new LinkedHashSet<Artifact>();
+ for(Artifact dependency : dependencies) {
+ FlexScope dependencyScope = FlexScope.COMPILE;
+ if(dependency.getScope() != null) {
+ dependencyScope = FlexScope.valueOf(dependency.getScope().toUpperCase());
+ }
+ if(dependencyScope == scope) {
+ artifacts.add(dependency);
+ }
+ }
+ return artifacts;
+ }
+
+ private void outputLibraryPath(Document configDocument, String baseXPath, Set<Artifact> artifacts) {
+ if(!artifacts.isEmpty()) {
+ XPathFactory xPathfactory = XPathFactory.newInstance();
+ XPath xpath = xPathfactory.newXPath();
+ try {
+ XPathExpression expr = xpath.compile(baseXPath);
+ Element externalLibraryPath = (Element) expr.evaluate(configDocument, XPathConstants.NODE);
+ if(externalLibraryPath != null) {
+ // Remove any existing path-elements (They are leftovers from the ant build).
+ Node child = externalLibraryPath.getFirstChild();
+ while(child != null) {
+ externalLibraryPath.removeChild(child);
+ child = externalLibraryPath.getFirstChild();
+ }
+
+ // Add the new path-elements.
+ for (Artifact artifact : artifacts) {
+ Element newPathElement = configDocument.createElement("path-element");
+ newPathElement.setTextContent(artifact.getFile().getAbsolutePath());
+ externalLibraryPath.appendChild(newPathElement);
+ }
+ } else {
+ throw new RuntimeException("Could not find root element " + baseXPath);
+ }
+ } catch (XPathExpressionException e) {
+ throw new RuntimeException("Error adding path-element", e);
+ }
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/704d6324/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/CompileASMojo.java
----------------------------------------------------------------------
diff --git a/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/CompileASMojo.java b/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/CompileASMojo.java
index fa63c49..ad18d5b 100644
--- a/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/CompileASMojo.java
+++ b/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/CompileASMojo.java
@@ -16,198 +16,48 @@
package org.apache.flex.maven.flexjs;
-import org.apache.flex.maven.flexjs.types.FlexScope;
-import org.apache.flex.tools.FlexTool;
-import org.apache.flex.tools.FlexToolGroup;
-import org.apache.flex.tools.FlexToolRegistry;
-import org.apache.maven.RepositoryUtils;
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugins.annotations.Component;
import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
-import org.apache.maven.project.*;
-import org.eclipse.aether.RepositorySystemSession;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.xml.sax.SAXException;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.xpath.*;
import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.Collections;
-import java.util.LinkedHashSet;
-import java.util.Set;
/**
* goal which compiles a project into a flexjs swc library.
*/
@Mojo(name="compile-as",defaultPhase = LifecyclePhase.PROCESS_SOURCES)
public class CompileASMojo
- extends AbstractMojo
+ extends BaseCompileMojo
{
- @Parameter(defaultValue = "${project}", readonly = true)
- private MavenProject project;
-
@Parameter(defaultValue="${basedir}/src/main/config/compile-as-config.xml")
private File compileAsConfigFile;
- @Parameter(defaultValue="${project.build.directory}")
- private File outputDirectory;
-
@Parameter(defaultValue = "${project.artifactId}-${project.version}.swc")
private String outputFileName;
- @Parameter(readonly = true, defaultValue = "${repositorySystemSession}")
- private RepositorySystemSession repositorySystemSession;
-
- @Component
- private ProjectDependenciesResolver projectDependenciesResolver;
-
- public void execute()
- throws MojoExecutionException
- {
- if(!compileAsConfigFile.exists()) {
- getLog().info(" - compilation config file '" + compileAsConfigFile.getPath() +
- "' not found, skipping compilation");
- return;
- }
-
- // Prepare the config file.
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- try {
- // Resolve all the dependencies.
- Set<Artifact> resolvedDependencies = resolveDependencies();
-
- // Parse the input document.
- DocumentBuilder builder = factory.newDocumentBuilder();
- Document configuration = builder.parse(new FileInputStream(compileAsConfigFile));
-
- // Append the path-elements for the compile scope.
- Set<Artifact> compileDependencies = getDependenciesForScope(resolvedDependencies, FlexScope.COMPILE);
- outputLibraryPath(configuration, "flex-config/compiler/library-path", compileDependencies);
-
- // Append the path-elements for the external scope.
- Set<Artifact> externalDependencies = getDependenciesForScope(resolvedDependencies, FlexScope.EXTERNAL);
- outputLibraryPath(configuration, "flex-config/compiler/external-library-path", externalDependencies);
-
- // Write the modified config-file to the output directory.
- File configFileOutput = new File(outputDirectory, "compile-as-config.xml");
- TransformerFactory transformerFactory = TransformerFactory.newInstance();
- Transformer transformer = transformerFactory.newTransformer();
- DOMSource source = new DOMSource(configuration);
- StreamResult result = new StreamResult(configFileOutput);
- transformer.transform(source, result);
-
- // Get the falcon tool group.
- FlexToolRegistry toolRegistry = new FlexToolRegistry();
- FlexToolGroup toolGroup = toolRegistry.getToolGroup("Falcon");
- if(toolGroup == null) {
- throw new MojoExecutionException("Could not find tool group: Falcon");
- }
-
- // Get an instance of the compiler and run the build.
- FlexTool compc = toolGroup.getFlexTool(FlexTool.FLEX_TOOL_COMPC);
- File outputFile = new File(outputDirectory, outputFileName);
- String[] args = {"-debug", "-load-config=" + configFileOutput.getPath(),
- "-output=" + outputFile.getPath(), "-define=COMPILE::AS3,true", "-define=COMPILE::JS,false"};
- compc.execute(args);
-
- // Attach the file created by the compiler as artifact file to maven.
- project.getArtifact().setFile(outputFile);
-
- } catch (ParserConfigurationException e) {
- e.printStackTrace();
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (SAXException e) {
- e.printStackTrace();
- } catch (TransformerConfigurationException e) {
- e.printStackTrace();
- } catch (TransformerException e) {
- e.printStackTrace();
- }
+ @Override
+ protected File getConfigFile() {
+ return compileAsConfigFile;
}
- private Set<Artifact> resolveDependencies() throws MojoExecutionException {
- DefaultDependencyResolutionRequest dependencyResolutionRequest =
- new DefaultDependencyResolutionRequest(project, repositorySystemSession);
- DependencyResolutionResult dependencyResolutionResult;
-
- try {
- dependencyResolutionResult = projectDependenciesResolver.resolve(dependencyResolutionRequest);
- } catch (DependencyResolutionException ex) {
- throw new MojoExecutionException(ex.getMessage(), ex);
- }
-
- Set<Artifact> artifacts = new LinkedHashSet<Artifact>();
- if (dependencyResolutionResult.getDependencyGraph() != null
- && !dependencyResolutionResult.getDependencyGraph().getChildren().isEmpty()) {
- RepositoryUtils.toArtifacts(artifacts, dependencyResolutionResult.getDependencyGraph().getChildren(),
- Collections.singletonList(project.getArtifact().getId()), null);
- }
- return artifacts;
+ private File getOutputFile() {
+ return new File(outputDirectory, outputFileName);
}
- private Set<Artifact> getDependenciesForScope(Set<Artifact> dependencies, FlexScope scope) {
- Set<Artifact> artifacts = new LinkedHashSet<Artifact>();
- for(Artifact dependency : dependencies) {
- FlexScope dependencyScope = FlexScope.COMPILE;
- if(dependency.getScope() != null) {
- dependencyScope = FlexScope.valueOf(dependency.getScope().toUpperCase());
- }
- if(dependencyScope == scope) {
- artifacts.add(dependency);
- }
- }
- return artifacts;
+ @Override
+ protected String[] getCompilerArgs(File configFile) {
+ return new String[]{"-debug", "-load-config=" + configFile.getPath(),
+ "-output=" + getOutputFile().getPath(), "-define=COMPILE::AS3,true", "-define=COMPILE::JS,false"};
}
- private void outputLibraryPath(Document configDocument, String baseXPath, Set<Artifact> artifacts) {
- if(!artifacts.isEmpty()) {
- XPathFactory xPathfactory = XPathFactory.newInstance();
- XPath xpath = xPathfactory.newXPath();
- try {
- XPathExpression expr = xpath.compile(baseXPath);
- Element externalLibraryPath = (Element) expr.evaluate(configDocument, XPathConstants.NODE);
- if(externalLibraryPath != null) {
- // Remove any existing path-elements (They are leftovers from the ant build).
- Node child = externalLibraryPath.getFirstChild();
- while(child != null) {
- externalLibraryPath.removeChild(child);
- child = externalLibraryPath.getFirstChild();
- }
-
- // Add the new path-elements.
- for (Artifact artifact : artifacts) {
- Element newPathElement = configDocument.createElement("path-element");
- newPathElement.setTextContent(artifact.getFile().getAbsolutePath());
- externalLibraryPath.appendChild(newPathElement);
- }
- } else {
- throw new RuntimeException("Could not find root element " + baseXPath);
- }
- } catch (XPathExpressionException e) {
- throw new RuntimeException("Error adding path-element", e);
- }
+ @Override
+ public void execute() throws MojoExecutionException {
+ super.execute();
+ if(getOutputFile().exists()) {
+ // Attach the file created by the compiler as artifact file to maven.
+ project.getArtifact().setFile(getOutputFile());
}
}
-
}
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/704d6324/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/CompileJSMojo.java
----------------------------------------------------------------------
diff --git a/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/CompileJSMojo.java b/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/CompileJSMojo.java
index 6ad19dc..620a4ea 100644
--- a/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/CompileJSMojo.java
+++ b/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/CompileJSMojo.java
@@ -16,18 +16,10 @@
package org.apache.flex.maven.flexjs;
-import org.apache.flex.tools.FlexTool;
-import org.apache.flex.tools.FlexToolGroup;
-import org.apache.flex.tools.FlexToolRegistry;
-import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugins.annotations.Component;
import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
-import org.apache.maven.project.MavenProject;
-import org.apache.maven.project.ProjectDependenciesResolver;
-import org.eclipse.aether.RepositorySystemSession;
import java.io.File;
@@ -36,29 +28,33 @@ import java.io.File;
*/
@Mojo(name="compile-js",defaultPhase = LifecyclePhase.PROCESS_SOURCES)
public class CompileJSMojo
- extends AbstractMojo
+ extends BaseCompileMojo
{
- @Parameter(defaultValue = "${project}", readonly = true)
- private MavenProject project;
-
@Parameter(defaultValue="${basedir}/src/main/config/compile-js-config.xml")
private File compileJsConfigFile;
- @Parameter(defaultValue="${project.build.directory}")
- private File outputDirectory;
-
@Parameter(defaultValue = "${project.artifactId}-${project.version}.swc")
private String outputFileName;
- @Parameter(readonly = true, defaultValue = "${repositorySystemSession}")
- private RepositorySystemSession repositorySystemSession;
+ @Override
+ protected File getConfigFile() {
+ return compileJsConfigFile;
+ }
+
+ private File getOutputDirectory() {
+ return new File(outputDirectory, "generated-sources/flexjs");
+ }
- @Component
- private ProjectDependenciesResolver projectDependenciesResolver;
+ @Override
+ protected String[] getCompilerArgs(File configFile) {
+ return new String[] {"-js-output-type=FLEXJS", "-keep-asdoc", "-load-config=" + configFile.getPath(),
+ "-output=" + new File(outputDirectory.getPath(), "generated-sources/flexjs").getPath(),
+ "-define=COMPILE::AS3,false", "-define=COMPILE::JS,true"};
+ }
- public void execute()
- throws MojoExecutionException
+ @Override
+ public void execute() throws MojoExecutionException
{
if(!compileJsConfigFile.exists()) {
getLog().info(" - compilation config file '" + compileJsConfigFile.getPath() +
@@ -66,40 +62,16 @@ public class CompileJSMojo
return;
}
- File generatedSourcesOutputDir = new File(outputDirectory, "generated-sources/flexjs");
+ File generatedSourcesOutputDir = getOutputDirectory();
if(!generatedSourcesOutputDir.exists()) {
if(!generatedSourcesOutputDir.mkdirs()) {
throw new MojoExecutionException("Could not create directory " + generatedSourcesOutputDir.getPath());
}
}
- // Get the falcon tool group.
- FlexToolRegistry toolRegistry = new FlexToolRegistry();
- FlexToolGroup toolGroup = toolRegistry.getToolGroup("FlexJS");
- if(toolGroup == null) {
- throw new MojoExecutionException("Could not find tool group: Falcon");
- }
-
- // Get an instance of the compiler and run the build.
- FlexTool compc = toolGroup.getFlexTool(FlexTool.FLEX_TOOL_COMPC);
- File outputFile = new File(outputDirectory, outputFileName);
-
-/* <!--arg value="+flexlib=${FLEX_HOME}/frameworks" />
- <arg value="+playerglobal.version=${playerglobal.version}" />
- <arg value="+env.PLAYERGLOBAL_HOME=${env.PLAYERGLOBAL_HOME}" />
- <arg value="+env.AIR_HOME=${env.AIR_HOME}" />
- <arg value="-external-library-path+=${JS.SWC}" />
- <!-- this is not on external-library path otherwise goog.requires are not generated -->
- <arg value="-library-path+=${GCL.SWC}" />*/
-
- String[] args = {"-js-output-type=FLEXJS", "-keep-asdoc", "-load-config=" + compileJsConfigFile.getPath(),
- "-output=" + new File(outputDirectory.getPath(), "generated-sources/flexjs").getPath(),
- "-define=COMPILE::AS3,false", "-define=COMPILE::JS,true"};
- compc.execute(args);
-
- // Attach the file created by the compiler as artifact file to maven.
- project.getArtifact().setFile(outputFile);
+ super.execute();
+ // TODO: Add Source directory
}
}