From a1bb36d5f443c6c13bf1e67dc03207496535227c Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Sat, 25 Apr 2009 09:48:05 +0000 Subject: [PATCH] Update equinox execution git-svn-id: https://svn.argeo.org/slc/trunk/maven@2351 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- maven-argeo-osgi-plugin/pom.xml | 6 +- .../maven/plugins/osgi/EquinoxExecMojo.java | 151 ++++++++---------- .../plugins/osgi/PackageBundlesMojo.java | 6 +- org.argeo.slc.maven.plugin/pom.xml | 4 +- .../plugin/DefaultMavenDependencyManager.java | 39 +++++ .../maven/plugin/MavenDependencyManager.java | 10 ++ .../argeo/slc/maven/plugin/SystemCall.java | 1 - .../resources/META-INF/plexus/components.xml | 6 + 8 files changed, 135 insertions(+), 88 deletions(-) diff --git a/maven-argeo-osgi-plugin/pom.xml b/maven-argeo-osgi-plugin/pom.xml index 2a389e22b..92efd943d 100644 --- a/maven-argeo-osgi-plugin/pom.xml +++ b/maven-argeo-osgi-plugin/pom.xml @@ -3,11 +3,11 @@ org.argeo.slc.maven slc-maven - 0.1.2 + 0.1.3 .. maven-argeo-osgi-plugin - 0.1.5 + 0.1.6-SNAPSHOT maven-plugin Argeo OSGi Plugin @@ -33,7 +33,7 @@ org.argeo.slc.maven org.argeo.slc.maven.plugin - 0.1.2 + 0.1.3-SNAPSHOT org.apache.maven diff --git a/maven-argeo-osgi-plugin/src/main/java/org/argeo/slc/maven/plugins/osgi/EquinoxExecMojo.java b/maven-argeo-osgi-plugin/src/main/java/org/argeo/slc/maven/plugins/osgi/EquinoxExecMojo.java index b393d20b3..7f54edd3d 100644 --- a/maven-argeo-osgi-plugin/src/main/java/org/argeo/slc/maven/plugins/osgi/EquinoxExecMojo.java +++ b/maven-argeo-osgi-plugin/src/main/java/org/argeo/slc/maven/plugins/osgi/EquinoxExecMojo.java @@ -3,45 +3,24 @@ package org.argeo.slc.maven.plugins.osgi; import java.io.File; import java.util.ArrayList; import java.util.Arrays; -import java.util.Comparator; +import java.util.HashMap; import java.util.Iterator; import java.util.List; +import java.util.Map; import java.util.Set; -import java.util.TreeSet; import org.apache.maven.artifact.Artifact; -import org.apache.maven.artifact.metadata.ArtifactMetadataSource; -import org.apache.maven.artifact.resolver.ArtifactResolutionResult; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; +import org.argeo.slc.maven.plugin.MavenDependencyManager; import org.argeo.slc.maven.plugin.SystemCall; /** - * @goal equinox-exec + * @goal equinox * */ public class EquinoxExecMojo extends AbstractOsgiMojo { - /** - * Used to look up Artifacts in the remote repository. - * - * @parameter expression= - * "${component.org.apache.maven.artifact.resolver.ArtifactResolver}" - * @required - * @readonly - */ - protected org.apache.maven.artifact.resolver.ArtifactResolver resolver; - - /** - * Used to look up Artifacts in the remote repository. - * - * @parameter expression= - * "${component.org.apache.maven.artifact.factory.ArtifactFactory}" - * @required - * @readonly - */ - protected org.apache.maven.artifact.factory.ArtifactFactory factory; - /** @component */ - private ArtifactMetadataSource artifactMetadataSource; + private MavenDependencyManager mavenDependencyManager; /** * Equinox artifact id @@ -64,7 +43,7 @@ public class EquinoxExecMojo extends AbstractOsgiMojo { /** * Java executable * - * @parameter expression="${jvm}" default-value="java" + * @parameter expression="${jvm}" default-value="${java.home}/bin/java" * @required */ protected String jvm; @@ -88,6 +67,13 @@ public class EquinoxExecMojo extends AbstractOsgiMojo { protected String[] defaultArgs = { "-clean", "-console", "-configuration", "conf" }; + /** + * JVM system properties + * + * @parameter alias="${systemProperties}" + */ + protected Map systemProperties; + /** * Execution directory * @@ -101,81 +87,78 @@ public class EquinoxExecMojo extends AbstractOsgiMojo { Artifact equinoxArtifact = null; Artifact osgiBootArtifact = null; - Set artifacts = project.createArtifacts(this.factory, null, null); - - ArtifactResolutionResult arr = resolver.resolveTransitively( - artifacts, project.getArtifact(), local, remoteRepos, - artifactMetadataSource, null); - // Order, just for display - Set dependencies = new TreeSet(new Comparator() { - public int compare(Object o1, Object o2) { - Artifact a1 = (Artifact) o1; - Artifact a2 = (Artifact) o2; - - if (!a1.getGroupId().equals(a2.getGroupId())) - return a1.getGroupId().compareTo(a2.getGroupId()); - else - return a1.getArtifactId().compareTo(a2.getArtifactId()); - } - }); - dependencies.addAll(arr.getArtifacts()); + Set dependencies = mavenDependencyManager + .getTransitiveProjectDependencies(project, remoteRepos, + local); StringBuffer osgiLocations = new StringBuffer(); List bundleArtifacts = new ArrayList(); boolean first = true; - // Set dependencies = project.getArtifacts(); for (Iterator it = dependencies.iterator(); it.hasNext();) { Artifact depArtifact = (Artifact) it.next(); - System.out.println(depArtifact.getGroupId() + ":" - + depArtifact.getArtifactId() + ":" - + depArtifact.getType() + ":" - + depArtifact.getVersion() + " (" - + depArtifact.getFile() + ")"); - if (depArtifact.getArtifactId().equals(equinoxArtifactId)) + printArtifact(depArtifact); + + if (depArtifact.getArtifactId().equals(equinoxArtifactId)) { equinoxArtifact = depArtifact; - else if (depArtifact.getArtifactId().equals(osgiBootArtifactId)) + } else if (depArtifact.getArtifactId().equals( + osgiBootArtifactId)) { osgiBootArtifact = depArtifact; - else { + } else { bundleArtifacts.add(depArtifact); - if (first) - first = false; - else - osgiLocations.append(File.pathSeparatorChar); - osgiLocations.append(depArtifact.getFile() - .getCanonicalPath() - .replace(File.separatorChar, '/')); + if ("jar".equals(depArtifact.getType())) { + // Add to OSGi locations + if (first) + first = false; + else + osgiLocations.append(File.pathSeparatorChar); + + osgiLocations.append(depArtifact.getFile() + .getCanonicalPath().replace(File.separatorChar, + '/')); + } } } - // Set defaults - if(jvmArgs==null) - jvmArgs=defaultJvmArgs; - if(args==null) - args=defaultArgs; - - + if (jvmArgs == null) + jvmArgs = defaultJvmArgs; + if (args == null) + args = defaultArgs; + if (systemProperties == null) + systemProperties = new HashMap(); + + // Build command List cmdList = new ArrayList(); cmdList.add(jvm); cmdList.addAll(Arrays.asList(jvmArgs)); - cmdList.add("-Dosgi.bundles=" - + osgiBootArtifact.getFile().getCanonicalPath() + "@start"); - cmdList.add("-Dslc.osgi.locations=" + osgiLocations); + if (!systemProperties.containsKey("osgi.bundles")) + cmdList.add("-Dosgi.bundles=" + + osgiBootArtifact.getFile().getCanonicalPath() + + "@start"); + if (!systemProperties.containsKey("slc.osgi.locations")) + cmdList.add("-Dslc.osgi.locations=" + osgiLocations); + for (Iterator keys = systemProperties.keySet().iterator(); keys + .hasNext();) { + Object key = keys.next(); + Object value = systemProperties.get(key); + String strValue = null; + if (value != null) { + strValue = value.toString().trim(); + strValue = strValue.replaceAll("\n", ""); + } + cmdList.add("-D" + key + "=" + strValue); + } cmdList.add("-jar"); cmdList.add(equinoxArtifact.getFile().getCanonicalPath()); cmdList.addAll(Arrays.asList(args)); - - String[] cmd = (String[])cmdList.toArray(new String[0]); - -// String cmdOld = jvm + " " + jvmArgs + " " + "-Dosgi.bundles=" -// + osgiBootArtifact.getFile().getCanonicalPath() + "@start " -// + "-Dslc.osgi.locations=" + osgiLocations + " -jar " -// + equinoxArtifact.getFile().getCanonicalPath() + " " + args; - for(int i=0;i" + project.getParentArtifact().getArtifactId() + "\n"); - bundlesPom.append("\t\t" - + project.getParentArtifact().getVersion() + "\n"); + bundlesPom + .append("\t\t" + + project.getParentArtifact().getBaseVersion() + + "\n"); bundlesPom.append("\t\n"); bundlesPom .append("\t" + project.getGroupId() + "\n"); diff --git a/org.argeo.slc.maven.plugin/pom.xml b/org.argeo.slc.maven.plugin/pom.xml index 9da0f69d1..e7cd45523 100644 --- a/org.argeo.slc.maven.plugin/pom.xml +++ b/org.argeo.slc.maven.plugin/pom.xml @@ -4,11 +4,11 @@ org.argeo.slc.maven slc-maven - 0.1.2 + 0.1.3 .. org.argeo.slc.maven.plugin - 0.1.2 + 0.1.3-SNAPSHOT jar Argeo Maven Plugin Development Support diff --git a/org.argeo.slc.maven.plugin/src/main/java/org/argeo/slc/maven/plugin/DefaultMavenDependencyManager.java b/org.argeo.slc.maven.plugin/src/main/java/org/argeo/slc/maven/plugin/DefaultMavenDependencyManager.java index 0c432acde..641b8f2a8 100644 --- a/org.argeo.slc.maven.plugin/src/main/java/org/argeo/slc/maven/plugin/DefaultMavenDependencyManager.java +++ b/org.argeo.slc.maven.plugin/src/main/java/org/argeo/slc/maven/plugin/DefaultMavenDependencyManager.java @@ -1,15 +1,22 @@ package org.argeo.slc.maven.plugin; import java.io.File; +import java.util.Comparator; import java.util.List; +import java.util.Set; +import java.util.TreeSet; import org.apache.maven.artifact.Artifact; +import org.apache.maven.artifact.metadata.ArtifactMetadataSource; import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.artifact.resolver.ArtifactNotFoundException; import org.apache.maven.artifact.resolver.ArtifactResolutionException; +import org.apache.maven.artifact.resolver.ArtifactResolutionResult; import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException; import org.apache.maven.artifact.versioning.VersionRange; import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.project.MavenProject; +import org.apache.maven.project.artifact.InvalidDependencyVersionException; import org.codehaus.plexus.archiver.ArchiverException; import org.codehaus.plexus.archiver.UnArchiver; import org.codehaus.plexus.archiver.manager.ArchiverManager; @@ -49,6 +56,9 @@ public class DefaultMavenDependencyManager implements MavenDependencyManager { */ protected ArchiverManager archiverManager; + /** @component */ + protected ArtifactMetadataSource artifactMetadataSource; + public DefaultMavenDependencyManager() { } @@ -94,4 +104,33 @@ public class DefaultMavenDependencyManager implements MavenDependencyManager { + " to: " + location + "\r\n" + e.toString(), e); } } + + public Set getTransitiveProjectDependencies(MavenProject project, + List remoteRepos, ArtifactRepository local) + throws InvalidDependencyVersionException, + ArtifactNotFoundException, ArtifactResolutionException { + Set artifacts = project.createArtifacts(this.factory, null, null); + + ArtifactResolutionResult arr = resolver.resolveTransitively(artifacts, + project.getArtifact(), local, remoteRepos, + this.artifactMetadataSource, null); + + // Order, just for display + Set dependencies = new TreeSet(new ArtifactComparator()); + dependencies.addAll(arr.getArtifacts()); + return dependencies; + } + + protected static class ArtifactComparator implements Comparator { + public int compare(Object o1, Object o2) { + Artifact a1 = (Artifact) o1; + Artifact a2 = (Artifact) o2; + + if (!a1.getGroupId().equals(a2.getGroupId())) + return a1.getGroupId().compareTo(a2.getGroupId()); + else + return a1.getArtifactId().compareTo(a2.getArtifactId()); + } + } + } diff --git a/org.argeo.slc.maven.plugin/src/main/java/org/argeo/slc/maven/plugin/MavenDependencyManager.java b/org.argeo.slc.maven.plugin/src/main/java/org/argeo/slc/maven/plugin/MavenDependencyManager.java index 09bae0245..94e715a93 100644 --- a/org.argeo.slc.maven.plugin/src/main/java/org/argeo/slc/maven/plugin/MavenDependencyManager.java +++ b/org.argeo.slc.maven.plugin/src/main/java/org/argeo/slc/maven/plugin/MavenDependencyManager.java @@ -2,10 +2,16 @@ package org.argeo.slc.maven.plugin; import java.io.File; import java.util.List; +import java.util.Set; import org.apache.maven.artifact.Artifact; +import org.apache.maven.artifact.metadata.ArtifactMetadataSource; import org.apache.maven.artifact.repository.ArtifactRepository; +import org.apache.maven.artifact.resolver.ArtifactNotFoundException; +import org.apache.maven.artifact.resolver.ArtifactResolutionException; import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.project.MavenProject; +import org.apache.maven.project.artifact.InvalidDependencyVersionException; public interface MavenDependencyManager { String ROLE = MavenDependencyManager.class.getName(); @@ -18,4 +24,8 @@ public interface MavenDependencyManager { public void unpackArtifact(Artifact artifact, File location) throws MojoExecutionException; + public Set getTransitiveProjectDependencies(MavenProject project, + List remoteRepos, ArtifactRepository local) + throws InvalidDependencyVersionException, + ArtifactNotFoundException, ArtifactResolutionException; } diff --git a/org.argeo.slc.maven.plugin/src/main/java/org/argeo/slc/maven/plugin/SystemCall.java b/org.argeo.slc.maven.plugin/src/main/java/org/argeo/slc/maven/plugin/SystemCall.java index 8d2e3a0d8..2265cd3a4 100644 --- a/org.argeo.slc.maven.plugin/src/main/java/org/argeo/slc/maven/plugin/SystemCall.java +++ b/org.argeo.slc.maven.plugin/src/main/java/org/argeo/slc/maven/plugin/SystemCall.java @@ -5,7 +5,6 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; -import java.util.List; import org.apache.commons.io.IOUtils; diff --git a/org.argeo.slc.maven.plugin/src/main/resources/META-INF/plexus/components.xml b/org.argeo.slc.maven.plugin/src/main/resources/META-INF/plexus/components.xml index 0d76e0d10..b8203e2bd 100644 --- a/org.argeo.slc.maven.plugin/src/main/resources/META-INF/plexus/components.xml +++ b/org.argeo.slc.maven.plugin/src/main/resources/META-INF/plexus/components.xml @@ -22,6 +22,12 @@ archiverManager + + org.apache.maven.artifact.metadata.ArtifactMetadataSource + + artifactMetadataSource + + -- 2.39.2