- Added more and more configuration options to the flexjs-maven-plugin
Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/ffd49309 Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/ffd49309 Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/ffd49309 Branch: refs/heads/develop Commit: ffd49309b779d0e99f2bedb4a21de5f46409f6ae Parents: e7f73a0 Author: Christofer Dutz <christofer.d...@codecentric.de> Authored: Wed May 4 15:40:56 2016 +0200 Committer: Christofer Dutz <christofer.d...@codecentric.de> Committed: Wed May 4 15:40:56 2016 +0200 ---------------------------------------------------------------------- .../org/apache/flex/maven/flexjs/BaseMojo.java | 27 +++++-- .../apache/flex/maven/flexjs/CompileASMojo.java | 17 +++- .../flex/maven/flexjs/CompileExternMojo.java | 26 +++++- .../apache/flex/maven/flexjs/CompileJSMojo.java | 41 +++++++++- .../org/apache/flex/maven/flexjs/Namespace.java | 27 +++++++ .../main/resources/config/compile-as-config.xml | 74 ++++++++--------- .../resources/config/compile-extern-config.xml | 38 ++++++++- .../main/resources/config/compile-js-config.xml | 85 ++++++++------------ 8 files changed, 230 insertions(+), 105 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/ffd49309/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/BaseMojo.java ---------------------------------------------------------------------- diff --git a/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/BaseMojo.java b/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/BaseMojo.java index a77c0a1..962ef19 100644 --- a/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/BaseMojo.java +++ b/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/BaseMojo.java @@ -20,10 +20,7 @@ import org.eclipse.aether.RepositorySystemSession; import java.io.File; import java.io.FileWriter; import java.io.IOException; -import java.util.Collection; -import java.util.Collections; -import java.util.LinkedList; -import java.util.List; +import java.util.*; /** * Created by christoferdutz on 22.04.16. @@ -39,6 +36,12 @@ public abstract class BaseMojo protected File outputDirectory; @Parameter + private Namespace[] namespaces; + + @Parameter + private String[] includeClasses; + + @Parameter private String targetPlayer = "11.1"; @Parameter @@ -68,6 +71,8 @@ public abstract class BaseMojo context.put("libraries", libraries); context.put("externalLibraries", externalLibraries); context.put("sourcePaths", sourcePaths); + context.put("namespaces", namespaces); + context.put("includeClasses", includeClasses); context.put("targetPlayer", targetPlayer); context.put("debug", debug); context.put("output", getOutput()); @@ -93,6 +98,8 @@ public abstract class BaseMojo protected List<String> getCompilerArgs(File configFile) { List<String> args = new LinkedList<String>(); args.add("-load-config=" + configFile.getPath()); +// args.add("+playerglobal.version=20.0"); +// args.add("+env.AIR_HOME=20.0"); return args; } @@ -137,13 +144,15 @@ public abstract class BaseMojo // Get an instance of the compiler and run the build. FlexTool tool = toolGroup.getFlexTool(getFlexTool()); - tool.execute(getCompilerArgs(configFile).toArray(new String[0])); + String[] args = getCompilerArgs(configFile).toArray(new String[0]); + getLog().info("Executing " + getFlexTool() + " in tool group " + getToolGroupName() + " with args: " + Arrays.toString(args)); + tool.execute(args); } protected List<Artifact> getLibraries(List<Artifact> artifacts) { List<Artifact> libraries = new LinkedList<Artifact>(); for(Artifact artifact : artifacts) { - if(!"external".equalsIgnoreCase(artifact.getScope())) { + if(!"external".equalsIgnoreCase(artifact.getScope()) && includeLibrary(artifact)) { libraries.add(artifact); } } @@ -153,7 +162,7 @@ public abstract class BaseMojo protected List<Artifact> getExternalLibraries(List<Artifact> artifacts) { List<Artifact> externalLibraries = new LinkedList<Artifact>(); for(Artifact artifact : artifacts) { - if("external".equalsIgnoreCase(artifact.getScope())) { + if("external".equalsIgnoreCase(artifact.getScope()) && includeLibrary(artifact)) { externalLibraries.add(artifact); } } @@ -180,4 +189,8 @@ public abstract class BaseMojo return artifacts; } + protected boolean includeLibrary(Artifact library) { + return true; + } + } http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/ffd49309/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 aec0e7d..52db4bb 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 @@ -17,12 +17,14 @@ package org.apache.flex.maven.flexjs; import org.apache.flex.tools.FlexTool; +import org.apache.maven.artifact.Artifact; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugins.annotations.LifecyclePhase; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; import java.io.File; +import java.util.List; /** * goal which compiles a project into a flexjs swc library. @@ -57,7 +59,15 @@ public class CompileASMojo @Override protected boolean skip() { - return true; + return false; + } + + @Override + protected List<String> getCompilerArgs(File configFile) { + List<String> args = super.getCompilerArgs(configFile); + args.add("-define=COMPILE::AS3,true"); + args.add("-define=COMPILE::JS,false"); + return args; } @Override @@ -70,4 +80,9 @@ public class CompileASMojo } } + @Override + protected boolean includeLibrary(Artifact library) { + return !"extern".equalsIgnoreCase(library.getClassifier()); + } + } http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/ffd49309/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/CompileExternMojo.java ---------------------------------------------------------------------- diff --git a/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/CompileExternMojo.java b/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/CompileExternMojo.java index 6ad8669..60f3411 100644 --- a/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/CompileExternMojo.java +++ b/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/CompileExternMojo.java @@ -17,6 +17,7 @@ package org.apache.flex.maven.flexjs; import org.apache.flex.tools.FlexTool; +import org.apache.maven.artifact.Artifact; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugins.annotations.Component; import org.apache.maven.plugins.annotations.LifecyclePhase; @@ -25,6 +26,7 @@ import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.project.MavenProjectHelper; import java.io.File; +import java.util.List; /** * goal which compiles a project into a flexjs swc library. @@ -60,12 +62,32 @@ public class CompileExternMojo } @Override + protected boolean skip() { + return false; + } + + @Override + protected List<String> getCompilerArgs(File configFile) { + List<String> args = super.getCompilerArgs(configFile); + args.add("-define=COMPILE::AS3,false"); + args.add("-define=COMPILE::JS,true"); + return args; + } + + @Override public void execute() throws MojoExecutionException { super.execute(); - // Add the extern to the artifact. - projectHelper.attachArtifact(project, getOutput(), "extern"); + if(getOutput().exists()) { + // Add the extern to the artifact. + projectHelper.attachArtifact(project, getOutput(), "extern"); + } + } + + @Override + protected boolean includeLibrary(Artifact library) { + return "extern".equalsIgnoreCase(library.getClassifier()); } } http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/ffd49309/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 89b66c9..3e0bcc9 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 @@ -17,11 +17,15 @@ package org.apache.flex.maven.flexjs; import org.apache.flex.tools.FlexTool; +import org.apache.maven.artifact.Artifact; +import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugins.annotations.LifecyclePhase; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; import java.io.File; +import java.util.LinkedList; +import java.util.List; /** * goal which compiles a project into a flexjs swc library. @@ -31,9 +35,12 @@ public class CompileJSMojo extends BaseMojo { - @Parameter(defaultValue = "${project.artifactId}-${project.version}") + @Parameter(defaultValue = "generated-sources/flexjs") private String outputDirectoryName; + @Parameter(defaultValue = "false") + private boolean skipSwc; + @Override protected String getToolGroupName() { return "FlexJS"; @@ -56,6 +63,36 @@ public class CompileJSMojo @Override protected boolean skip() { - return true; + return false; + } + + @Override + protected List<String> getCompilerArgs(File configFile) { + List<String> args = super.getCompilerArgs(configFile); + //args.add("+flexlib=/Users/christoferdutz/Devtools/Apache/apache-flex-4.15.0/frameworks"); + //args.add("+flexlib=/Users/christoferdutz/Projects/Apache/Flex/flex-asjs/frameworks"); + args.add("-js-output-type=FLEXJS"); + args.add("-define=COMPILE::AS3,false"); + args.add("-define=COMPILE::JS,true"); + //args.add("-keep-asdoc"); + return args; + } + + @Override + public void execute() throws MojoExecutionException { + File outputDirectory = getOutput(); + if(!outputDirectory.exists()) { + if(!outputDirectory.mkdirs()) { + throw new MojoExecutionException("Could not create output directory " + outputDirectory.getPath()); + } + } + + super.execute(); + } + + @Override + protected boolean includeLibrary(Artifact library) { + return "extern".equalsIgnoreCase(library.getClassifier()); } + } http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/ffd49309/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/Namespace.java ---------------------------------------------------------------------- diff --git a/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/Namespace.java b/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/Namespace.java new file mode 100644 index 0000000..e748863 --- /dev/null +++ b/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/Namespace.java @@ -0,0 +1,27 @@ +package org.apache.flex.maven.flexjs; + +/** + * Created by christoferdutz on 01.05.16. + */ +public class Namespace { + + private String uri; + private String manifest; + + public String getUri() { + return uri; + } + + public void setUri(String uri) { + this.uri = uri; + } + + public String getManifest() { + return manifest; + } + + public void setManifest(String manifest) { + this.manifest = manifest; + } + +} http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/ffd49309/flexjs-maven-plugin/src/main/resources/config/compile-as-config.xml ---------------------------------------------------------------------- diff --git a/flexjs-maven-plugin/src/main/resources/config/compile-as-config.xml b/flexjs-maven-plugin/src/main/resources/config/compile-as-config.xml index 7c5bedb..de28c26 100644 --- a/flexjs-maven-plugin/src/main/resources/config/compile-as-config.xml +++ b/flexjs-maven-plugin/src/main/resources/config/compile-as-config.xml @@ -23,39 +23,46 @@ <accessible>true</accessible> <library-path> - #foreach($artifact in $libraries)<path-element>$artifact.file</path-element>#end +#foreach($artifact in $libraries) <path-element>$artifact.file</path-element> +#end </library-path> <external-library-path> - #foreach($artifact in $externalLibraries)<path-element>$artifact.file</path-element>#end +#foreach($artifact in $externalLibraries) <path-element>$artifact.file</path-element> +#end </external-library-path> + <source-path> +#foreach($sourcePath in $sourcePaths) <path-element>$sourcePath</path-element> +#end + </source-path> + <namespaces> - <namespace> - <uri>library://ns.adobe.com/flex/spark</uri> - <manifest>manifest.xml</manifest> +#foreach($namespace in $namespaces) <namespace> + <uri>$namespace.uri</uri> + <manifest>$namespace.manifest</manifest> </namespace> +#end </namespaces> <keep-as3-metadata> - <name>SkinPart</name> + <name>Bindable</name> + <name>Managed</name> + <name>ChangeEvent</name> + <name>NonCommittingChangeEvent</name> + <name>Transient</name> </keep-as3-metadata> <mxml> - <minimum-supported-version>4.0.0</minimum-supported-version> + <children-as-data>true</children-as-data> </mxml> - <locale/> + <binding-value-change-event>org.apache.flex.events.ValueChangeEvent</binding-value-change-event> + <binding-value-change-event-kind>org.apache.flex.events.ValueChangeEvent</binding-value-change-event-kind> + <binding-value-change-event-type>valueChange</binding-value-change-event-type> - <source-path> - <path-element>../src/main/flex</path-element> - <path-element>generated-sources/externc/classes</path-element> - <path-element>generated-sources/externc/interfaces</path-element> - <path-element>generated-sources/externc/constants</path-element> - <path-element>generated-sources/externc/functions</path-element> - <path-element>generated-sources/externc/interfaces</path-element> - <path-element>generated-sources/externc/typedefs</path-element> - </source-path> + <locale> + </locale> <warn-no-constructor>false</warn-no-constructor> @@ -70,35 +77,20 @@ </compiler> <include-sources> - <!--path-element>../src/main/flex</path-element> - <path-element>generated-sources/externc/classes</path-element> - <path-element>generated-sources/externc/interfaces</path-element> - <path-element>generated-sources/externc/constants</path-element> - <path-element>generated-sources/externc/functions</path-element> - <path-element>generated-sources/externc/interfaces</path-element> - <path-element>generated-sources/externc/typedefs</path-element--> </include-sources> - <!-- - <include-file> - <name>defaults.css</name> - <path>defaults.css</path> - </include-file> - <include-file> - <name>assets/ErrorIndicator.png</name> - <path>assets/ErrorIndicator.png</path> - </include-file> - <include-file> - <name>assets/RequiredIndicator.png</name> - <path>assets/RequiredIndicator.png</path> - </include-file> + <include-classes> +#foreach($includeClass in $includeClasses) <class>$includeClass</class> +#end + </include-classes> <include-namespaces> - <uri>library://ns.adobe.com/flex/spark</uri> +#foreach($namespace in $namespaces) <uri>$namespace.uri</uri> +#end </include-namespaces> - <resource-bundle-list>bundles.properties</resource-bundle-list> + <target-player>${targetPlayer}</target-player> + + <output>${output}</output> - <target-player>${playerglobal.version}</target-player> - --> </flex-config> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/ffd49309/flexjs-maven-plugin/src/main/resources/config/compile-extern-config.xml ---------------------------------------------------------------------- diff --git a/flexjs-maven-plugin/src/main/resources/config/compile-extern-config.xml b/flexjs-maven-plugin/src/main/resources/config/compile-extern-config.xml index abd46df..60346a1 100644 --- a/flexjs-maven-plugin/src/main/resources/config/compile-extern-config.xml +++ b/flexjs-maven-plugin/src/main/resources/config/compile-extern-config.xml @@ -20,7 +20,7 @@ <compiler> - <accessible>true</accessible> + <accessible>false</accessible> <library-path> #foreach($artifact in $libraries) <path-element>$artifact.file</path-element> @@ -37,8 +37,32 @@ #end </source-path> + <namespaces> +#foreach($namespace in $namespaces) <namespace> + <uri>$namespace.uri</uri> + <manifest>$namespace.manifest</manifest> + </namespace> +#end + </namespaces> + <warn-no-constructor>false</warn-no-constructor> + <keep-as3-metadata> + <name>Bindable</name> + <name>Managed</name> + <name>ChangeEvent</name> + <name>NonCommittingChangeEvent</name> + <name>Transient</name> + </keep-as3-metadata> + + <mxml> + <children-as-data>true</children-as-data> + </mxml> + + <binding-value-change-event>org.apache.flex.events.ValueChangeEvent</binding-value-change-event> + <binding-value-change-event-kind>org.apache.flex.events.ValueChangeEvent</binding-value-change-event-kind> + <binding-value-change-event-type>valueChange</binding-value-change-event-type> + <define append="true"> <name>COMPILE::JS</name> <value>true</value> @@ -50,10 +74,20 @@ </compiler> <include-sources> -#foreach($sourcePath in $sourcePaths) <path-element>$sourcePath</path-element> +#foreach($sourcePath in $sourcePaths) <path-element>$sourcePath</path-element> #end </include-sources> + <include-namespaces> +#foreach($namespace in $namespaces) <uri>$namespace.uri</uri> +#end + </include-namespaces> + + <include-classes> +#foreach($includeClass in $includeClasses) <class>$includeClass</class> +#end + </include-classes> + <output>${output}</output> </flex-config> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/ffd49309/flexjs-maven-plugin/src/main/resources/config/compile-js-config.xml ---------------------------------------------------------------------- diff --git a/flexjs-maven-plugin/src/main/resources/config/compile-js-config.xml b/flexjs-maven-plugin/src/main/resources/config/compile-js-config.xml index 8674369..60346a1 100644 --- a/flexjs-maven-plugin/src/main/resources/config/compile-js-config.xml +++ b/flexjs-maven-plugin/src/main/resources/config/compile-js-config.xml @@ -20,44 +20,48 @@ <compiler> - <accessible>true</accessible> + <accessible>false</accessible> <library-path> - #foreach($artifact in $libraries)<path-element>$artifact.file</path-element>#end +#foreach($artifact in $libraries) <path-element>$artifact.file</path-element> +#end </library-path> <external-library-path> - #foreach($artifact in $externalLibraries)<path-element>$artifact.file</path-element>#end +#foreach($artifact in $externalLibraries) <path-element>$artifact.file</path-element> +#end </external-library-path> + <source-path> +#foreach($sourcePath in $sourcePaths) <path-element>$sourcePath</path-element> +#end + </source-path> + <namespaces> - <namespace> - <uri>library://ns.adobe.com/flex/spark</uri> - <manifest>manifest.xml</manifest> +#foreach($namespace in $namespaces) <namespace> + <uri>$namespace.uri</uri> + <manifest>$namespace.manifest</manifest> </namespace> +#end </namespaces> + <warn-no-constructor>false</warn-no-constructor> + <keep-as3-metadata> - <name>SkinPart</name> + <name>Bindable</name> + <name>Managed</name> + <name>ChangeEvent</name> + <name>NonCommittingChangeEvent</name> + <name>Transient</name> </keep-as3-metadata> <mxml> - <minimum-supported-version>4.0.0</minimum-supported-version> + <children-as-data>true</children-as-data> </mxml> - <locale/> - - <source-path> - <path-element>../src/main/flex</path-element> - <path-element>generated-sources/externc/classes</path-element> - <path-element>generated-sources/externc/interfaces</path-element> - <path-element>generated-sources/externc/constants</path-element> - <path-element>generated-sources/externc/functions</path-element> - <path-element>generated-sources/externc/interfaces</path-element> - <path-element>generated-sources/externc/typedefs</path-element> - </source-path> - - <warn-no-constructor>false</warn-no-constructor> + <binding-value-change-event>org.apache.flex.events.ValueChangeEvent</binding-value-change-event> + <binding-value-change-event-kind>org.apache.flex.events.ValueChangeEvent</binding-value-change-event-kind> + <binding-value-change-event-type>valueChange</binding-value-change-event-type> <define append="true"> <name>COMPILE::JS</name> @@ -67,42 +71,23 @@ <name>COMPILE::AS3</name> <value>false</value> </define> - - <js-output-type>FLEXJS</js-output-type> - - <keep-asdoc>true</keep-asdoc> </compiler> <include-sources> - <!--path-element>../src/main/flex</path-element> - <path-element>generated-sources/externc/classes</path-element> - <path-element>generated-sources/externc/interfaces</path-element> - <path-element>generated-sources/externc/constants</path-element> - <path-element>generated-sources/externc/functions</path-element> - <path-element>generated-sources/externc/interfaces</path-element> - <path-element>generated-sources/externc/typedefs</path-element--> +#foreach($sourcePath in $sourcePaths) <path-element>$sourcePath</path-element> +#end </include-sources> - <!-- - <include-file> - <name>defaults.css</name> - <path>defaults.css</path> - </include-file> - <include-file> - <name>assets/ErrorIndicator.png</name> - <path>assets/ErrorIndicator.png</path> - </include-file> - <include-file> - <name>assets/RequiredIndicator.png</name> - <path>assets/RequiredIndicator.png</path> - </include-file> - <include-namespaces> - <uri>library://ns.adobe.com/flex/spark</uri> +#foreach($namespace in $namespaces) <uri>$namespace.uri</uri> +#end </include-namespaces> - <resource-bundle-list>bundles.properties</resource-bundle-list> + <include-classes> +#foreach($includeClass in $includeClasses) <class>$includeClass</class> +#end + </include-classes> + + <output>${output}</output> - <target-player>${playerglobal.version}</target-player> - --> </flex-config>