You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by jo...@apache.org on 2017/03/21 23:11:06 UTC

[29/50] git commit: [flex-falcon] [refs/heads/master] - - Extended the CompileJSMojo to be able to operate if the Swf compilation had been skipped (The Mojo now generates a dummy swc with an empty catalog.xml to satisfy the JS compiler)

- Extended the CompileJSMojo to be able to operate if the Swf compilation had been skipped (The Mojo now generates a dummy swc with an empty catalog.xml to satisfy the JS compiler)


Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/82a07043
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/82a07043
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/82a07043

Branch: refs/heads/master
Commit: 82a07043b3d2809e77f23eb063b558b3058728b6
Parents: d61a688
Author: Christofer Dutz <ch...@codecentric.de>
Authored: Wed Feb 22 14:53:00 2017 +0100
Committer: Christofer Dutz <ch...@codecentric.de>
Committed: Wed Feb 22 14:53:00 2017 +0100

----------------------------------------------------------------------
 .../apache/flex/maven/flexjs/CompileJSMojo.java | 55 +++++++++++++++++---
 1 file changed, 49 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/82a07043/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 03a0f63..2347f4a 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
@@ -21,9 +21,11 @@ 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.io.*;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
 
 /**
  * goal which compiles a project into a flexjs swc library.
@@ -69,14 +71,19 @@ public class CompileJSMojo
 
     @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());
-            }
+        // FlexJS requires an existing SWC. If we skipped
+        // the AS compilation, this doesn't exist yet so
+        // we simply generate an empty swc and use that.
+        if(!getOutput().exists()) {
+            createEmptySwc(getOutput());
         }
 
         super.execute();
+
+        if(getOutput().exists()) {
+            // Attach the file created by the compiler as artifact file to maven.
+            project.getArtifact().setFile(getOutput());
+        }
     }
 
     @Override
@@ -117,4 +124,40 @@ public class CompileJSMojo
         return "typedefs".equalsIgnoreCase(library.getClassifier());
     }
 
+    private void createEmptySwc(File outputFile) throws MojoExecutionException {
+        if(!outputFile.getParentFile().exists()) {
+            if(!outputFile.getParentFile().mkdirs()) {
+                throw new MojoExecutionException("Could not create directory " + outputFile.getParent());
+            }
+        }
+
+        // Create a dummy swc (A zip file which contains a minimal catalog.xml) */
+        try {
+            OutputStream stream = new FileOutputStream(outputFile);
+            stream = new BufferedOutputStream(stream);
+            ZipOutputStream zipStream = new ZipOutputStream(stream);
+            ZipEntry entry = new ZipEntry("catalog.xml");
+            zipStream.putNextEntry(entry);
+            byte[] dummyCatalog = (
+                    "<?xml version=\"1.0\" ?>\n" +
+                    "<swc xmlns=\"http://www.adobe.com/flash/swccatalog/9\">\n" +
+                    "    <versions>\n" +
+                    "        <swc version=\"1.2\"/>\n" +
+                    "        <compiler name=\"Apache Flex - FlexJS: Compiler: Compiler\" version=\"0.8\" build=\"0-SNAPSHOT\"/>\n" +
+                    "    </versions>\n" +
+                    "    <features>\n" +
+                    "    </features>\n" +
+                    "    <libraries>\n" +
+                    "    </libraries>\n" +
+                    "</swc>").getBytes();
+            zipStream.write(dummyCatalog);
+            zipStream.closeEntry();
+            zipStream.close();
+        } catch (FileNotFoundException e) {
+            throw new MojoExecutionException("Could not create empty zip file at " + outputFile.getPath());
+        } catch (IOException e) {
+            throw new MojoExecutionException("Could not create empty zip file at " + outputFile.getPath());
+        }
+    }
+
 }