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é <[email protected]> Authored: Fri Jun 5 19:14:45 2015 +0200 Committer: Jean-Baptiste Onofré <[email protected]> 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); } }
