- Added a PackageJSMojo to make the usage of the maven-war-plugin and the build-helper-plugin obsolete.
Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/aee4ae31 Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/aee4ae31 Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/aee4ae31 Branch: refs/heads/master Commit: aee4ae31ab2d5c2fd31d068e2d0aa624d60901e2 Parents: 4426fbf Author: Christofer Dutz <[email protected]> Authored: Sat Mar 11 21:56:42 2017 +0100 Committer: Christofer Dutz <[email protected]> Committed: Sat Mar 11 21:56:42 2017 +0100 ---------------------------------------------------------------------- .../flex/maven/flexjs/CompileAppMojo.java | 16 +-- .../apache/flex/maven/flexjs/PackageJSMojo.java | 116 +++++++++++++++++++ .../resources/META-INF/plexus/components.xml | 6 +- 3 files changed, 123 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/aee4ae31/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/CompileAppMojo.java ---------------------------------------------------------------------- diff --git a/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/CompileAppMojo.java b/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/CompileAppMojo.java index 258f6cc..5f4b11b 100644 --- a/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/CompileAppMojo.java +++ b/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/CompileAppMojo.java @@ -17,11 +17,9 @@ 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; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; -import org.apache.maven.project.MavenProjectHelper; import org.apache.velocity.VelocityContext; import java.io.File; @@ -41,8 +39,8 @@ public class CompileAppMojo @Parameter(defaultValue = "${project.artifactId}-${project.version}.swf") private String flashOutputFileName; - @Parameter(defaultValue = "${project.artifactId}-${project.version}.war") - private String javascriptOutputFileName; + @Parameter(defaultValue = "javascript") + private String javascriptOutputDirectoryName; @Parameter(defaultValue = "namespaces") protected String namespaceDirectory; @@ -60,9 +58,6 @@ public class CompileAppMojo @Parameter(defaultValue = "false") protected boolean removeCirculars; - @Component - protected MavenProjectHelper mavenProjectHelper; - @Override protected String getToolGroupName() { if(outputJavaScript) { @@ -95,7 +90,7 @@ public class CompileAppMojo @Override protected File getOutput() throws MojoExecutionException { if(outputJavaScript) { - return new File(outputDirectory, "javascript"); + return new File(outputDirectory, javascriptOutputDirectoryName); } return new File(outputDirectory, flashOutputFileName); } @@ -192,10 +187,7 @@ public class CompileAppMojo @Override protected boolean isForceSwcExternalLibraryPath() { // The forceSwcExternalLibraryPath should only apply to Flash compilations. - if(outputJavaScript) { - return false; - } - return super.isForceSwcExternalLibraryPath(); + return !outputJavaScript && super.isForceSwcExternalLibraryPath(); } /*private void zipDirectory(File source, File target) { http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/aee4ae31/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/PackageJSMojo.java ---------------------------------------------------------------------- diff --git a/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/PackageJSMojo.java b/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/PackageJSMojo.java new file mode 100644 index 0000000..8a9c2d4 --- /dev/null +++ b/flexjs-maven-plugin/src/main/java/org/apache/flex/maven/flexjs/PackageJSMojo.java @@ -0,0 +1,116 @@ +/* + * 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. + */ + +package org.apache.flex.maven.flexjs; + +import org.apache.commons.io.IOUtils; +import org.apache.maven.plugin.AbstractMojo; +import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.plugin.MojoFailureException; +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.MavenProjectHelper; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; + +/** + * Created by christoferdutz on 11.03.17. + */ +@Mojo(name="package-js",defaultPhase = LifecyclePhase.PACKAGE) +public class PackageJSMojo extends AbstractMojo { + + @Parameter(defaultValue="${project.build.directory}") + protected File outputDirectory; + + @Parameter(defaultValue = "javascript") + private String javascriptOutputDirectoryName; + + @Parameter(defaultValue = "${project.artifactId}-${project.version}.war") + private String warOutputFileName; + + @Parameter + protected boolean debug = false; + + @Component + protected MavenProject project; + + @Component + private MavenProjectHelper projectHelper; + + /** + * This mojo should only be executed if a JS output was generated + * + * @throws MojoExecutionException + * @throws MojoFailureException + */ + public void execute() throws MojoExecutionException, MojoFailureException { + File warSourceDirectory = new File(outputDirectory, javascriptOutputDirectoryName); + warSourceDirectory = new File(new File(warSourceDirectory, "bin"), debug ? "js-debug" : "js-release"); + + // If the directory exists, pack everything into one zip file. + if(warSourceDirectory.exists()) { + File warTargetFile = new File(outputDirectory, warOutputFileName); + + // If the output file already exists, delete it first. + if(warTargetFile.exists()) { + if(!warTargetFile.delete()) { + throw new MojoExecutionException( + "Could not delete existing war file at " + warSourceDirectory.getPath()); + } + } + + // Create a new zip file with the output of the JS compiler. + try { + ZipOutputStream zipOutputStream = new ZipOutputStream(new FileOutputStream(warTargetFile)); + addDirectoryToZip(warSourceDirectory, warSourceDirectory, zipOutputStream); + IOUtils.closeQuietly(zipOutputStream); + } catch (IOException e) { + throw new MojoExecutionException("Error creating war archive", e); + } + + // Attach the war file to the maven project. + if(warTargetFile.exists()) { + projectHelper.attachArtifact( project, "war", null, warTargetFile); + } + } + } + + private void addDirectoryToZip(File zipRootDirectory, File currentDirectory, ZipOutputStream zipOutputStream) + throws IOException { + File[] directoryContent = currentDirectory.listFiles(); + if(directoryContent != null) { + for (File file : directoryContent) { + if(file.isDirectory()) { + addDirectoryToZip(zipRootDirectory, file, zipOutputStream); + } else { + String relativePath = zipRootDirectory.toURI().relativize(currentDirectory.toURI()).getPath(); + ZipEntry zipEntry = new ZipEntry(relativePath + "/" + file.getName()); + zipOutputStream.putNextEntry(zipEntry); + FileInputStream in = new FileInputStream(file); + IOUtils.copy(in, zipOutputStream); + IOUtils.closeQuietly(in); + } + } + } + } + +} http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/aee4ae31/flexjs-maven-plugin/src/main/resources/META-INF/plexus/components.xml ---------------------------------------------------------------------- diff --git a/flexjs-maven-plugin/src/main/resources/META-INF/plexus/components.xml b/flexjs-maven-plugin/src/main/resources/META-INF/plexus/components.xml index 78dbe96..441a165 100644 --- a/flexjs-maven-plugin/src/main/resources/META-INF/plexus/components.xml +++ b/flexjs-maven-plugin/src/main/resources/META-INF/plexus/components.xml @@ -116,9 +116,9 @@ <!--test> org.apache.maven.plugins:maven-surefire-plugin:test </test--> - <!--package> - org.apache.flex.flexjs.compiler:flexjs-maven-plugin:package - </package--> + <package> + org.apache.flex.flexjs.compiler:flexjs-maven-plugin:package-js + </package> <install> org.apache.maven.plugins:maven-install-plugin:install </install>
