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);
}
}