You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by gn...@apache.org on 2016/02/29 16:17:59 UTC
karaf git commit: [KARAF-4362] Improve the maven assembly goal so
that it can run at package phase instead of install phase
Repository: karaf
Updated Branches:
refs/heads/master 6a9ca438c -> caebbeb5d
[KARAF-4362] Improve the maven assembly goal so that it can run at package phase instead of install phase
Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/caebbeb5
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/caebbeb5
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/caebbeb5
Branch: refs/heads/master
Commit: caebbeb5d8fb819ff323f8dd3c0c557b541ada4c
Parents: 6a9ca43
Author: Guillaume Nodet <gn...@apache.org>
Authored: Mon Feb 29 16:17:49 2016 +0100
Committer: Guillaume Nodet <gn...@apache.org>
Committed: Mon Feb 29 16:17:49 2016 +0100
----------------------------------------------------------------------
.../download/impl/MavenDownloadManager.java | 2 +-
.../assembly/AssemblyDeployCallback.java | 2 +-
.../apache/karaf/profile/assembly/Builder.java | 16 +++++++--
.../profile/assembly/CustomDownloadManager.java | 26 ++++++++++++++-
.../org/apache/karaf/tooling/AssemblyMojo.java | 35 ++++++++++++++++++++
5 files changed, 76 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/karaf/blob/caebbeb5/features/core/src/main/java/org/apache/karaf/features/internal/download/impl/MavenDownloadManager.java
----------------------------------------------------------------------
diff --git a/features/core/src/main/java/org/apache/karaf/features/internal/download/impl/MavenDownloadManager.java b/features/core/src/main/java/org/apache/karaf/features/internal/download/impl/MavenDownloadManager.java
index 482c431..86e1f6a 100644
--- a/features/core/src/main/java/org/apache/karaf/features/internal/download/impl/MavenDownloadManager.java
+++ b/features/core/src/main/java/org/apache/karaf/features/internal/download/impl/MavenDownloadManager.java
@@ -78,7 +78,7 @@ public class MavenDownloadManager implements DownloadManager {
return (Map) Collections.synchronizedMap(downloaded);
}
- class MavenDownloader implements Downloader {
+ protected class MavenDownloader implements Downloader {
private volatile int pending = 0;
private final MultiException exception = new MultiException("Error");
http://git-wip-us.apache.org/repos/asf/karaf/blob/caebbeb5/profile/src/main/java/org/apache/karaf/profile/assembly/AssemblyDeployCallback.java
----------------------------------------------------------------------
diff --git a/profile/src/main/java/org/apache/karaf/profile/assembly/AssemblyDeployCallback.java b/profile/src/main/java/org/apache/karaf/profile/assembly/AssemblyDeployCallback.java
index 9aefce6..2c4a09b 100644
--- a/profile/src/main/java/org/apache/karaf/profile/assembly/AssemblyDeployCallback.java
+++ b/profile/src/main/java/org/apache/karaf/profile/assembly/AssemblyDeployCallback.java
@@ -202,7 +202,7 @@ public class AssemblyDeployCallback implements Deployer.DeployCallback {
path = Parser.pathFromMaven(uri);
} else {
uri = uri.replaceAll("[^0-9a-zA-Z.\\-_]+", "_");
- if (uri.length() > 256) {
+ if (uri.length() > 256) {
//to avoid the File name too long exception
uri = uri.substring(0, 255);
}
http://git-wip-us.apache.org/repos/asf/karaf/blob/caebbeb5/profile/src/main/java/org/apache/karaf/profile/assembly/Builder.java
----------------------------------------------------------------------
diff --git a/profile/src/main/java/org/apache/karaf/profile/assembly/Builder.java b/profile/src/main/java/org/apache/karaf/profile/assembly/Builder.java
index 3076375..f0758e1 100644
--- a/profile/src/main/java/org/apache/karaf/profile/assembly/Builder.java
+++ b/profile/src/main/java/org/apache/karaf/profile/assembly/Builder.java
@@ -160,6 +160,7 @@ public class Builder {
private Path systemDirectory;
private Map<String, Profile> allProfiles;
private KarafPropertyEdits propertyEdits;
+ private Map<String, String> translatedUrls;
public static Builder newInstance() {
return new Builder();
@@ -362,6 +363,17 @@ public class Builder {
return this;
}
+ /**
+ * Specify a set of url mappings to use instead of
+ * downloading from the original urls.
+ * @param translatedUrls the urls translations.
+ * @return this.
+ */
+ public Builder translatedUrls(Map<String, String> translatedUrls) {
+ this.translatedUrls = translatedUrls;
+ return this;
+ }
+
public List<String> getBlacklistedProfiles() {
return blacklistedProfiles;
}
@@ -415,7 +427,7 @@ public class Builder {
}
MavenResolver resolver = MavenResolvers.createMavenResolver(props, ORG_OPS4J_PAX_URL_MVN_PID);
executor = Executors.newScheduledThreadPool(8);
- manager = new CustomDownloadManager(resolver, executor);
+ manager = new CustomDownloadManager(resolver, executor, null, translatedUrls);
this.resolver = new ResolverImpl(new Slf4jResolverLog(LOGGER));
//
@@ -506,7 +518,7 @@ public class Builder {
Profile overallOverlay = Profiles.getOverlay(overallProfile, allProfiles, environment);
Profile overallEffective = Profiles.getEffective(overallOverlay, false);
- manager = new CustomDownloadManager(resolver, executor, overallEffective);
+ manager = new CustomDownloadManager(resolver, executor, overallEffective, translatedUrls);
Hashtable<String, String> agentProps = new Hashtable<>(overallEffective.getConfiguration(ORG_OPS4J_PAX_URL_MVN_PID));
final Map<String, String> properties = new HashMap<>();
http://git-wip-us.apache.org/repos/asf/karaf/blob/caebbeb5/profile/src/main/java/org/apache/karaf/profile/assembly/CustomDownloadManager.java
----------------------------------------------------------------------
diff --git a/profile/src/main/java/org/apache/karaf/profile/assembly/CustomDownloadManager.java b/profile/src/main/java/org/apache/karaf/profile/assembly/CustomDownloadManager.java
index 6c7ae95..b8bf017 100644
--- a/profile/src/main/java/org/apache/karaf/profile/assembly/CustomDownloadManager.java
+++ b/profile/src/main/java/org/apache/karaf/profile/assembly/CustomDownloadManager.java
@@ -16,9 +16,11 @@
*/
package org.apache.karaf.profile.assembly;
+import java.util.Map;
import java.util.concurrent.ScheduledExecutorService;
import org.apache.karaf.features.FeaturesService;
+import org.apache.karaf.features.internal.download.Downloader;
import org.apache.karaf.features.internal.download.impl.AbstractDownloadTask;
import org.apache.karaf.features.internal.download.impl.MavenDownloadManager;
import org.apache.karaf.profile.Profile;
@@ -27,18 +29,40 @@ import org.ops4j.pax.url.mvn.MavenResolver;
public class CustomDownloadManager extends MavenDownloadManager {
private final Profile profile;
+ private final Map<String, String> translatedUrls;
public CustomDownloadManager(MavenResolver resolver, ScheduledExecutorService executor) {
- this(resolver, executor, null);
+ this(resolver, executor, null, null);
}
public CustomDownloadManager(MavenResolver resolver, ScheduledExecutorService executor, Profile profile) {
+ this(resolver, executor, profile, null);
+ }
+
+ public CustomDownloadManager(MavenResolver resolver, ScheduledExecutorService executor, Profile profile, Map<String, String> translatedUrls) {
super(resolver, executor, 0, 1);
this.profile = profile;
+ this.translatedUrls = translatedUrls;
}
@Override
protected AbstractDownloadTask createCustomDownloadTask(String url) {
return new CustomSimpleDownloadTask(executorService, profile, url);
}
+
+ @Override
+ public Downloader createDownloader() {
+ return new CustomMavenDownloader();
+ }
+
+ class CustomMavenDownloader extends MavenDownloader {
+ protected AbstractDownloadTask createDownloadTask(String url) {
+ if (translatedUrls != null && translatedUrls.containsKey(url)) {
+ url = translatedUrls.get(url);
+ }
+ return super.createDownloadTask(url);
+ }
+ }
+
+
}
http://git-wip-us.apache.org/repos/asf/karaf/blob/caebbeb5/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/AssemblyMojo.java
----------------------------------------------------------------------
diff --git a/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/AssemblyMojo.java b/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/AssemblyMojo.java
index cee6109..a2dcaa9 100644
--- a/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/AssemblyMojo.java
+++ b/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/AssemblyMojo.java
@@ -39,7 +39,9 @@ import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.attribute.PosixFilePermissions;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
/**
* Creates a customized Karaf distribution by installing features and setting up
@@ -222,6 +224,14 @@ public class AssemblyMojo extends MojoSupport {
@Parameter(defaultValue = "${project.basedir}/src/main/karaf/assembly-property-edits.xml")
protected String propertyFileEdits;
+ /**
+ * Specify a set of translated urls to use instead of downloading the artifacts
+ * from their original locations. The given set will be extended with already
+ * built artifacts from the maven project.
+ */
+ @Parameter
+ protected Map<String, String> translatedUrls;
+
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
try {
@@ -305,6 +315,31 @@ public class AssemblyMojo extends MojoSupport {
}
}
+ Map<String, String> urls = new HashMap<>();
+ List<Artifact> artifacts = new ArrayList<>(project.getAttachedArtifacts());
+ artifacts.add(project.getArtifact());
+ for (Artifact artifact : artifacts) {
+ if (artifact.getFile() != null && artifact.getFile().exists()) {
+ String mvnUrl = "mvn:" + artifact.getGroupId() + "/" + artifact.getArtifactId()
+ + "/" + artifact.getVersion();
+ String type = artifact.getType();
+ if ("bundle".equals(type)) {
+ type = "jar";
+ }
+ if (!"jar".equals(type) || artifact.getClassifier() != null) {
+ mvnUrl += "/" + type;
+ if (artifact.getClassifier() != null) {
+ mvnUrl += "/" + artifact.getClassifier();
+ }
+ }
+ urls.put(mvnUrl, artifact.getFile().toURI().toString());
+ }
+ }
+ if (translatedUrls != null) {
+ urls.putAll(translatedUrls);
+ }
+ builder.translatedUrls(urls);
+
// creating system directory
getLog().info("Creating work directory");
builder.homeDirectory(workDirectory.toPath());