You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2015/06/05 19:15:17 UTC

karaf git commit: [KARAF-3729] CreateArchiveMojo now supports filtered resources

Repository: karaf
Updated Branches:
  refs/heads/karaf-3.0.x bca5d44df -> 93c4b0f45


[KARAF-3729] CreateArchiveMojo now supports filtered resources


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/93c4b0f4
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/93c4b0f4
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/93c4b0f4

Branch: refs/heads/karaf-3.0.x
Commit: 93c4b0f4531a9d0255b7171e36153dccec8d3d2d
Parents: bca5d44
Author: Jean-Baptiste Onofré <jb...@apache.org>
Authored: Fri Jun 5 19:14:45 2015 +0200
Committer: Jean-Baptiste Onofré <jb...@apache.org>
Committed: Fri Jun 5 19:14:45 2015 +0200

----------------------------------------------------------------------
 .../tooling/instances/CreateArchiveMojo.java    | 200 ++++++++++---------
 1 file changed, 111 insertions(+), 89 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/93c4b0f4/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/instances/CreateArchiveMojo.java
----------------------------------------------------------------------
diff --git a/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/instances/CreateArchiveMojo.java b/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/instances/CreateArchiveMojo.java
index 4c64864..f31ff15 100644
--- a/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/instances/CreateArchiveMojo.java
+++ b/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/instances/CreateArchiveMojo.java
@@ -22,11 +22,11 @@ import java.io.File;
 import java.io.IOException;
 
 import org.apache.karaf.tooling.utils.MojoSupport;
-import org.apache.maven.model.Resource;
 import org.apache.tools.ant.Project;
 import org.apache.tools.ant.taskdefs.MatchingTask;
 import org.apache.tools.ant.taskdefs.Tar;
 import org.apache.tools.ant.taskdefs.Zip;
+import org.apache.tools.ant.types.ArchiveFileSet;
 import org.apache.tools.ant.types.TarFileSet;
 import org.apache.tools.ant.types.ZipFileSet;
 import org.apache.maven.artifact.Artifact;
@@ -89,10 +89,10 @@ public class CreateArchiveMojo extends MojoSupport {
         artifact.setFile(targetFile);
         try {
             //now pack up the server.
-            if(archiveTarGz){
+            if (archiveTarGz) {
                 archive("tar.gz");
             }
-            if(archiveZip) {
+            if (archiveZip) {
                 archive("zip");
             }
         } catch (Exception e) {
@@ -101,10 +101,10 @@ public class CreateArchiveMojo extends MojoSupport {
     }
 
     @SuppressWarnings("deprecation")
-	private void archive(String type) throws IOException {
+    private void archive(String type) throws IOException {
         Artifact artifact1 = factory.createArtifactWithClassifier(project.getArtifact().getGroupId(), project.getArtifact().getArtifactId(), project.getArtifact().getVersion(), type, "bin");
         File target1 = archive(targetServerDirectory, destDir, artifact1);
-        projectHelper.attachArtifact( project, artifact1.getType(), null, target1 );
+        projectHelper.attachArtifact(project, artifact1.getType(), null, target1);
     }
 
     public File archive(File source, File dest, Artifact artifact) throws //ArchiverException,
@@ -113,13 +113,93 @@ public class CreateArchiveMojo extends MojoSupport {
         if (targetFile != null && project.getPackaging().equals("karaf-assembly")) {
             serverName = targetFile.getName();
         } else {
-           serverName = artifact.getArtifactId() + "-" + artifact.getVersion();
+            serverName = artifact.getArtifactId() + "-" + artifact.getVersion();
         }
         dest = new File(dest, serverName + "." + artifact.getType());
-        Project project = new Project();
-        MatchingTask archiver;
+        Archiver archiver;
         if ("tar.gz".equals(artifact.getType())) {
-            Tar tar = new Tar();
+            archiver = new TarArchiver(dest);
+        } else if ("zip".equals(artifact.getType())) {
+            archiver = new ZipArchiver(dest);
+        } else {
+            throw new IllegalArgumentException("Unknown target type: " + artifact.getType());
+        }
+        populateArchive(archiver, source, serverName);
+        return dest;
+    }
+
+    private <T extends ArchiveFileSet> void populateArchive(Archiver<T> archiver, File source, String serverName) {
+        Project project = new Project();
+        T fileSet = archiver.createFileSet();
+        fileSet.setDir(source);
+        fileSet.setPrefix(serverName);
+        fileSet.setProject(project);
+        fileSet.setExcludes("bin/");
+        archiver.add(fileSet);
+
+        fileSet = archiver.createFileSet();
+        fileSet.setDir(source);
+        fileSet.setPrefix(serverName);
+        fileSet.setProject(project);
+        fileSet.setIncludes("bin/");
+        fileSet.setExcludes("bin/*.bat");
+        fileSet.setFileMode("755");
+        archiver.add(fileSet);
+
+        fileSet = archiver.createFileSet();
+        fileSet.setDir(source);
+        fileSet.setPrefix(serverName);
+        fileSet.setProject(project);
+        fileSet.setIncludes("bin/*.bat");
+        archiver.add(fileSet);
+
+        File outputDirectory = new File(this.project.getBuild().getOutputDirectory());
+        if (outputDirectory.exists()) {
+            fileSet = archiver.createFileSet();
+            fileSet.setPrefix(serverName);
+            fileSet.setDir(outputDirectory);
+            fileSet.setProject(project);
+            fileSet.setExcludes("**/*.class");
+            archiver.add(fileSet);
+        }
+
+        MatchingTask task = archiver.getTask();
+        task.setProject(project);
+        task.execute();
+
+    }
+
+    private class ZipArchiver implements Archiver<ZipFileSet> {
+
+        private final Zip zip;
+
+        public ZipArchiver(File dest) {
+            zip = new Zip();
+            zip.setDestFile(dest);
+        }
+
+        @Override
+        public ZipFileSet createFileSet() {
+            return new ZipFileSet();
+        }
+
+        @Override
+        public void add(ZipFileSet fileSet) {
+            zip.add(fileSet);
+        }
+
+        @Override
+        public MatchingTask getTask() {
+            return zip;
+        }
+    }
+
+    private class TarArchiver implements Archiver<TarFileSet> {
+
+        private final Tar tar;
+
+        public TarArchiver(File dest) {
+            tar = new Tar();
             Tar.TarCompressionMethod tarCompressionMethod = new Tar.TarCompressionMethod();
             tarCompressionMethod.setValue("gzip");
             tar.setCompression(tarCompressionMethod);
@@ -127,89 +207,31 @@ public class CreateArchiveMojo extends MojoSupport {
             fileMode.setValue(Tar.TarLongFileMode.GNU);
             tar.setLongfile(fileMode);
             tar.setDestFile(dest);
-            TarFileSet rc = new TarFileSet();
-            rc.setDir(source);
-            rc.setPrefix(serverName);
-            rc.setProject(project);
-            rc.setExcludes("bin/");
-            tar.add(rc);
-
-            rc = new TarFileSet();
-            rc.setDir(source);
-            rc.setPrefix(serverName);
-            rc.setProject(project);
-            rc.setIncludes("bin/");
-            rc.setExcludes("bin/*.bat");
-            rc.setFileMode("755");
-            tar.add(rc);
-
-            rc = new TarFileSet();
-            rc.setDir(source);
-            rc.setPrefix(serverName);
-            rc.setProject(project);
-            rc.setIncludes("bin/*.bat");
-            tar.add(rc);
-
-            for (Resource resource: this.project.getResources()) {
-                File resourceFile = new File(resource.getDirectory());
-                if (resourceFile.exists()) {
-                    rc = new TarFileSet();
-                    rc.setPrefix(serverName);
-                    rc.setProject(project);
-                    rc.setDir(resourceFile);
-                    rc.appendIncludes(resource.getIncludes().toArray(new String[0]));
-                    rc.appendExcludes(resource.getExcludes().toArray(new String[0]));
-                    tar.add(rc);
-                }
-            }
+        }
 
-            archiver = tar;
-        } else if ("zip".equals(artifact.getType())) {
-            Zip zip = new Zip();
-            zip.setDestFile(dest);
-            ZipFileSet fs = new ZipFileSet();
-            fs.setDir(source);
-            fs.setPrefix(serverName);
-            fs.setProject(project);
-            fs.setExcludes("bin/");
-            zip.addFileset(fs);
-
-            fs = new ZipFileSet();
-            fs.setDir(source);
-            fs.setPrefix(serverName);
-            fs.setProject(project);
-            fs.setIncludes("bin/");
-            fs.setExcludes("bin/*.bat");
-            fs.setFileMode("755");
-            zip.add(fs);
-
-            fs = new ZipFileSet();
-            fs.setDir(source);
-            fs.setPrefix(serverName);
-            fs.setProject(project);
-            fs.setIncludes("bin/*.bat");
-            zip.add(fs);
-
-            for (Resource resource: this.project.getResources()) {
-                File resourceFile = new File(resource.getDirectory());
-                if (resourceFile.exists()) {
-                    fs = new ZipFileSet();
-                    fs.setPrefix(serverName);
-                    fs.setProject(project);
-                    fs.setDir(resourceFile);
-                    fs.appendIncludes(resource.getIncludes().toArray(new String[0]));
-                    fs.appendExcludes(resource.getExcludes().toArray(new String[0]));
-                    zip.add(fs);
-                }
-            }
+        @Override
+        public TarFileSet createFileSet() {
+            return new TarFileSet();
+        }
 
-            archiver = zip;
-        } else {
-            throw new IllegalArgumentException("Unknown target type: " + artifact.getType());
+        @Override
+        public void add(TarFileSet fileSet) {
+            tar.add(fileSet);
         }
-        archiver.setProject(project);
-        archiver.execute();
-        return dest;
+
+        @Override
+        public MatchingTask getTask() {
+            return tar;
+        }
+    }
+
+    private interface Archiver<T extends ArchiveFileSet> {
+
+        MatchingTask getTask();
+
+        T createFileSet();
+
+        void add(T fileSet);
     }
 
 }