]> git.argeo.org Git - gpl/argeo-slc.git/commitdiff
Update equinox execution
authorMathieu Baudier <mbaudier@argeo.org>
Sat, 25 Apr 2009 09:48:05 +0000 (09:48 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Sat, 25 Apr 2009 09:48:05 +0000 (09:48 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk/maven@2351 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

maven-argeo-osgi-plugin/pom.xml
maven-argeo-osgi-plugin/src/main/java/org/argeo/slc/maven/plugins/osgi/EquinoxExecMojo.java
maven-argeo-osgi-plugin/src/main/java/org/argeo/slc/maven/plugins/osgi/PackageBundlesMojo.java
org.argeo.slc.maven.plugin/pom.xml
org.argeo.slc.maven.plugin/src/main/java/org/argeo/slc/maven/plugin/DefaultMavenDependencyManager.java
org.argeo.slc.maven.plugin/src/main/java/org/argeo/slc/maven/plugin/MavenDependencyManager.java
org.argeo.slc.maven.plugin/src/main/java/org/argeo/slc/maven/plugin/SystemCall.java
org.argeo.slc.maven.plugin/src/main/resources/META-INF/plexus/components.xml

index 2a389e22b6523ef736196249ad1487fd2132696a..92efd943d89aa642ea9c9bc096f9e8d7dff5381a 100644 (file)
@@ -3,11 +3,11 @@
        <parent>\r
                <groupId>org.argeo.slc.maven</groupId>\r
                <artifactId>slc-maven</artifactId>\r
-               <version>0.1.2</version>\r
+               <version>0.1.3</version>\r
                <relativePath>..</relativePath>\r
        </parent>\r
        <artifactId>maven-argeo-osgi-plugin</artifactId>\r
-       <version>0.1.5</version>\r
+       <version>0.1.6-SNAPSHOT</version>\r
        <packaging>maven-plugin</packaging>\r
        <name>Argeo OSGi Plugin</name>\r
 \r
@@ -33,7 +33,7 @@
                <dependency>\r
                        <groupId>org.argeo.slc.maven</groupId>\r
                        <artifactId>org.argeo.slc.maven.plugin</artifactId>\r
-                       <version>0.1.2</version>\r
+                       <version>0.1.3-SNAPSHOT</version>\r
                </dependency>\r
                <dependency>\r
                        <groupId>org.apache.maven</groupId>\r
index b393d20b3d45e05b8d30d8000dcd1e97156bfffa..7f54edd3de87b0fac91c60d8f431baf3f99e6bfb 100644 (file)
@@ -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<cmd.length;i++)
+
+                       String[] cmd = (String[]) cmdList.toArray(new String[0]);
+
+                       for (int i = 0; i < cmd.length; i++)
                                System.out.print(cmd[i]);
                        System.out.print('\n');
-                       
+
                        SystemCall systemCall = new SystemCall(execDir.getCanonicalPath(),
                                        cmd, true);
                        systemCall.run();
@@ -185,4 +168,12 @@ public class EquinoxExecMojo extends AbstractOsgiMojo {
                }
 
        }
+
+       protected static void printArtifact(Artifact artifact) {
+               System.out.println(artifact.getGroupId() + ":"
+                               + artifact.getArtifactId() + ":" + artifact.getType() + ":"
+                               + artifact.getClassifier() + ":" + artifact.getVersion() + " ("
+                               + artifact.getFile() + ")");
+       }
+
 }
index 26150fe62b62a925ba418c26c1337ac5ce42673d..ec61d5a8761c52e6030b6fcd01d26c6be66fd7ba 100644 (file)
@@ -32,8 +32,10 @@ public class PackageBundlesMojo extends AbstractBundlesPackagerMojo {
                bundlesPom.append("\t\t<artifactId>"
                                + project.getParentArtifact().getArtifactId()
                                + "</artifactId>\n");
-               bundlesPom.append("\t\t<version>"
-                               + project.getParentArtifact().getVersion() + "</version>\n");
+               bundlesPom
+                               .append("\t\t<version>"
+                                               + project.getParentArtifact().getBaseVersion()
+                                               + "</version>\n");
                bundlesPom.append("\t</parent>\n");
                bundlesPom
                                .append("\t<groupId>" + project.getGroupId() + "</groupId>\n");
index 9da0f69d1cddfa8c0a5f0f6a353524f7941b9a6d..e7cd45523a100f4e125a35e6b75a4b32f43f3193 100644 (file)
@@ -4,11 +4,11 @@
        <parent>\r
                <groupId>org.argeo.slc.maven</groupId>\r
                <artifactId>slc-maven</artifactId>\r
-               <version>0.1.2</version>\r
+               <version>0.1.3</version>\r
                <relativePath>..</relativePath>\r
        </parent>\r
        <artifactId>org.argeo.slc.maven.plugin</artifactId>\r
-       <version>0.1.2</version>\r
+       <version>0.1.3-SNAPSHOT</version>\r
        <packaging>jar</packaging>\r
        <name>Argeo Maven Plugin Development Support</name>\r
 \r
index 0c432acdee49405a2fe521b85c84d495c16e3185..641b8f2a8f8b054d6ec40dea11147323f2019db7 100644 (file)
@@ -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());
+               }
+       }
+
 }
index 09bae0245f09083e038b255e79f545ff9c1688b3..94e715a93613695d3550d0bd8890b3d8bcc5b628 100644 (file)
@@ -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;
 }
index 8d2e3a0d86166407ebc547910b7d4bf75bdc5b95..2265cd3a4a0129405248fa864165990295d5873e 100644 (file)
@@ -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;
 
index 0d76e0d102c578729ff702ba387480ebd8ad8523..b8203e2bd137203e85b2bc1238080c78d0611964 100644 (file)
                                        </role>
                                        <field-name>archiverManager</field-name>
                                </requirement>
+                               <requirement>
+                                       <role>org.apache.maven.artifact.metadata.ArtifactMetadataSource
+                                       </role>
+                                       <field-name>artifactMetadataSource
+                                       </field-name>
+                               </requirement>
                        </requirements>
                        <configuration />
                </component>