]> git.argeo.org Git - gpl/argeo-slc.git/commitdiff
Introduce Maven support
authorMathieu Baudier <mbaudier@argeo.org>
Mon, 12 Apr 2010 11:17:12 +0000 (11:17 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Mon, 12 Apr 2010 11:17:12 +0000 (11:17 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@3448 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

20 files changed:
demo/site/org.argeo.slc.demo.agent/META-INF/spring/demo.xml
demo/site/org.argeo.slc.demo.maven/.project [new file with mode: 0644]
demo/site/org.argeo.slc.demo.maven/.settings/org.eclipse.pde.core.prefs [new file with mode: 0644]
demo/site/org.argeo.slc.demo.maven/META-INF/MANIFEST.MF [new file with mode: 0644]
demo/site/org.argeo.slc.demo.maven/META-INF/spring/imports.xml [new file with mode: 0644]
demo/site/org.argeo.slc.demo.maven/META-INF/spring/maven.xml [new file with mode: 0644]
demo/site/org.argeo.slc.demo.maven/META-INF/spring/osgi.xml [new file with mode: 0644]
demo/site/org.argeo.slc.demo.maven/ant/hello/build.xml [new file with mode: 0644]
demo/site/org.argeo.slc.demo.maven/build.properties [new file with mode: 0644]
demo/site/org.argeo.slc.demo.maven/conf/ant.xml [new file with mode: 0644]
demo/site/org.argeo.slc.demo.maven/conf/flowGenerator.xml [new file with mode: 0644]
demo/site/org.argeo.slc.demo.maven/conf/imports.xml [new file with mode: 0644]
demo/site/org.argeo.slc.demo.maven/conf/osgi.xml [new file with mode: 0644]
dep/org.argeo.slc.dep.agent/pom.xml
pom.xml
runtime/org.argeo.slc.support.maven/.classpath
runtime/org.argeo.slc.support.maven/.project
runtime/org.argeo.slc.support.maven/pom.xml
runtime/org.argeo.slc.support.maven/src/main/java/org/argeo/slc/maven/MavenDeployEnvironment.java
runtime/org.argeo.slc.support.maven/src/main/java/org/argeo/slc/maven/MavenManager.java

index 0eda31f1096397e41f380eccb8445b38b40fd618..6467d6ccb6964f87bd0d7a57c08682681c06526a 100644 (file)
@@ -11,6 +11,8 @@
        <bundle id="basic" symbolic-name="org.argeo.slc.demo.basic"
                action="start" />
        <bundle id="ant" symbolic-name="org.argeo.slc.demo.ant" action="start" />
+       <bundle id="maven" symbolic-name="org.argeo.slc.demo.maven"
+               action="start" />
        <!--
                <bundle id="detached" symbolic-name="org.argeo.slc.demo.detached"
                action="start" /> <bundle id="det"
diff --git a/demo/site/org.argeo.slc.demo.maven/.project b/demo/site/org.argeo.slc.demo.maven/.project
new file mode 100644 (file)
index 0000000..0f0cc36
--- /dev/null
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+       <name>org.argeo.slc.demo.maven</name>
+       <comment></comment>
+       <projects>
+       </projects>
+       <buildSpec>
+               <buildCommand>
+                       <name>org.eclipse.pde.ManifestBuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>org.eclipse.pde.SchemaBuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+       </buildSpec>
+       <natures>
+               <nature>org.eclipse.pde.PluginNature</nature>
+       </natures>
+</projectDescription>
diff --git a/demo/site/org.argeo.slc.demo.maven/.settings/org.eclipse.pde.core.prefs b/demo/site/org.argeo.slc.demo.maven/.settings/org.eclipse.pde.core.prefs
new file mode 100644 (file)
index 0000000..fd871b4
--- /dev/null
@@ -0,0 +1,4 @@
+#Wed Jan 06 20:27:20 CET 2010
+eclipse.preferences.version=1
+pluginProject.extensions=false
+resolve.requirebundle=false
diff --git a/demo/site/org.argeo.slc.demo.maven/META-INF/MANIFEST.MF b/demo/site/org.argeo.slc.demo.maven/META-INF/MANIFEST.MF
new file mode 100644 (file)
index 0000000..20ffbd2
--- /dev/null
@@ -0,0 +1,17 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: SLC Demo Maven
+Bundle-SymbolicName: org.argeo.slc.demo.maven
+Bundle-Version: 0.12.2.SNAPSHOT
+Bundle-Description: Demonstrate Maven support
+Import-Package: org.aopalliance.aop;version="1.0.0",
+ org.apache.maven.project,
+ org.argeo.slc.core.execution;version="0.12.2.SNAPSHOT-r3445",
+ org.argeo.slc.execution;version="0.12.2.SNAPSHOT-r3445",
+ org.argeo.slc.maven;version="0.12.2.SNAPSHOT-r3353",
+ org.argeo.slc.osgi;version="0.12.2.SNAPSHOT-r3424",
+ org.springframework.aop;version="2.5.6.SEC01",
+ org.springframework.aop.framework;version="2.5.6.SEC01",
+ org.springframework.aop.scope;version="2.5.6.SEC01",
+ org.springframework.beans.factory.config;version="2.5.6.SEC01",
+ org.springframework.osgi.util;version="1.2.1"
diff --git a/demo/site/org.argeo.slc.demo.maven/META-INF/spring/imports.xml b/demo/site/org.argeo.slc.demo.maven/META-INF/spring/imports.xml
new file mode 100644 (file)
index 0000000..3428e8b
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="
+       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
+
+       <import resource="classpath:org/argeo/slc/core/execution/simple.xml" />
+</beans>
\ No newline at end of file
diff --git a/demo/site/org.argeo.slc.demo.maven/META-INF/spring/maven.xml b/demo/site/org.argeo.slc.demo.maven/META-INF/spring/maven.xml
new file mode 100644 (file)
index 0000000..160d3c6
--- /dev/null
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<beans xmlns="http://www.springframework.org/schema/beans"\r
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"\r
+       xmlns:aop="http://www.springframework.org/schema/aop"\r
+       xsi:schemaLocation="\r
+       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd\r
+       http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-2.5.xsd\r
+       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">\r
+\r
+       <bean id="mavenManager" class="org.argeo.slc.maven.MavenManager"\r
+               init-method="init">\r
+       </bean>\r
+</beans>
\ No newline at end of file
diff --git a/demo/site/org.argeo.slc.demo.maven/META-INF/spring/osgi.xml b/demo/site/org.argeo.slc.demo.maven/META-INF/spring/osgi.xml
new file mode 100644 (file)
index 0000000..f505229
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<beans:beans xmlns="http://www.springframework.org/schema/osgi"\r
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"\r
+       xsi:schemaLocation="http://www.springframework.org/schema/osgi  \r
+       http://www.springframework.org/schema/osgi/spring-osgi-1.1.xsd\r
+       http://www.springframework.org/schema/beans   \r
+       http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
+\r
+       <beans:import resource="classpath:org/argeo/slc/osgi/execution.xml" />\r
+</beans:beans>
\ No newline at end of file
diff --git a/demo/site/org.argeo.slc.demo.maven/ant/hello/build.xml b/demo/site/org.argeo.slc.demo.maven/ant/hello/build.xml
new file mode 100644 (file)
index 0000000..78dffa3
--- /dev/null
@@ -0,0 +1,5 @@
+<project default="hello">
+       <target name="hello">
+               <echo message="Hello World!" />
+       </target>
+</project>
\ No newline at end of file
diff --git a/demo/site/org.argeo.slc.demo.maven/build.properties b/demo/site/org.argeo.slc.demo.maven/build.properties
new file mode 100644 (file)
index 0000000..5f22cdd
--- /dev/null
@@ -0,0 +1 @@
+bin.includes = META-INF/
diff --git a/demo/site/org.argeo.slc.demo.maven/conf/ant.xml b/demo/site/org.argeo.slc.demo.maven/conf/ant.xml
new file mode 100644 (file)
index 0000000..3cff3b4
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<beans xmlns="http://www.springframework.org/schema/beans"\r
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"\r
+       xmlns:aop="http://www.springframework.org/schema/aop"\r
+       xsi:schemaLocation="\r
+       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd\r
+       http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-2.5.xsd\r
+       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">\r
+\r
+       <bean id="main" class="org.argeo.slc.core.execution.DefaultExecutionFlow">\r
+               <property name="executables">\r
+                       <list>\r
+                               <bean class="org.argeo.slc.ant.AntRun">\r
+                                       <property name="buildFile" value="osgibundle:/ant/hello/build.xml" />\r
+                               </bean>\r
+                       </list>\r
+               </property>\r
+       </bean>\r
+</beans>
\ No newline at end of file
diff --git a/demo/site/org.argeo.slc.demo.maven/conf/flowGenerator.xml b/demo/site/org.argeo.slc.demo.maven/conf/flowGenerator.xml
new file mode 100644 (file)
index 0000000..d25caf9
--- /dev/null
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<beans xmlns="http://www.springframework.org/schema/beans"\r
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"\r
+       xmlns:aop="http://www.springframework.org/schema/aop"\r
+       xsi:schemaLocation="\r
+       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd\r
+       http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-2.5.xsd\r
+       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">\r
+\r
+       <bean class="org.argeo.slc.ant.AntFlowGenerator">\r
+               <property name="antFiles">\r
+                       <list>\r
+                               <value>osgibundle:/ant/hello/build.xml\r
+                               </value>\r
+                       </list>\r
+               </property>\r
+       </bean>\r
+</beans>
\ No newline at end of file
diff --git a/demo/site/org.argeo.slc.demo.maven/conf/imports.xml b/demo/site/org.argeo.slc.demo.maven/conf/imports.xml
new file mode 100644 (file)
index 0000000..3428e8b
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="
+       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
+
+       <import resource="classpath:org/argeo/slc/core/execution/simple.xml" />
+</beans>
\ No newline at end of file
diff --git a/demo/site/org.argeo.slc.demo.maven/conf/osgi.xml b/demo/site/org.argeo.slc.demo.maven/conf/osgi.xml
new file mode 100644 (file)
index 0000000..f505229
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<beans:beans xmlns="http://www.springframework.org/schema/osgi"\r
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"\r
+       xsi:schemaLocation="http://www.springframework.org/schema/osgi  \r
+       http://www.springframework.org/schema/osgi/spring-osgi-1.1.xsd\r
+       http://www.springframework.org/schema/beans   \r
+       http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
+\r
+       <beans:import resource="classpath:org/argeo/slc/osgi/execution.xml" />\r
+</beans:beans>
\ No newline at end of file
index 576f39a96feb9d7a3c513d1e4613f346de7bbd03..60e565b57c7ff82642521d7206920b430206fa1b 100644 (file)
                        <groupId>org.argeo.slc.runtime</groupId>
                        <artifactId>org.argeo.slc.launcher</artifactId>
                </dependency>
+               <dependency>
+                       <groupId>org.argeo.slc.runtime</groupId>
+                       <artifactId>org.argeo.slc.support.maven</artifactId>
+               </dependency>
 
                <!--  Spring -->
                <dependency>
diff --git a/pom.xml b/pom.xml
index e9127f7da6849a2466d2e46f0911e222c3b2b931..ad48eec3fda46eb27cb13c1b93f2582220b04590 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -247,6 +247,11 @@ limitations under the License.
                                <artifactId>org.argeo.slc.support.ant</artifactId>
                                <version>${project.version}</version>
                        </dependency>
+                       <dependency>
+                               <groupId>org.argeo.slc.runtime</groupId>
+                               <artifactId>org.argeo.slc.support.maven</artifactId>
+                               <version>${project.version}</version>
+                       </dependency>
                        <dependency>
                                <groupId>org.argeo.slc.runtime</groupId>
                                <artifactId>org.argeo.slc.support.hibernate</artifactId>
index 9653ef0ac65d46aeb55b97fc2273c071f8ec4f1b..ea37d312030a04df03e1b18596fe79df974312e8 100644 (file)
@@ -5,6 +5,6 @@
        <classpathentry kind="src" output="target/test-classes" path="src/test/java"/>\r
        <classpathentry kind="src" output="target/test-classes" path="src/test/resources"/>\r
        <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>\r
-       <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>\r
+       <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>\r
        <classpathentry kind="output" path="target/classes"/>\r
 </classpath>\r
index fdf94a1300f677364467ac08a51fe34d79c785a8..6d444af5aeae4414d3baa73cb9c1776a0e5bc133 100644 (file)
                        </arguments>
                </buildCommand>
                <buildCommand>
-                       <name>org.maven.ide.eclipse.maven2Builder</name>
+                       <name>org.eclipse.pde.ManifestBuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>org.eclipse.pde.SchemaBuilder</name>
                        <arguments>
                        </arguments>
                </buildCommand>
        </buildSpec>
        <natures>
                <nature>org.eclipse.jdt.core.javanature</nature>
-               <nature>org.maven.ide.eclipse.maven2Nature</nature>
+               <nature>org.eclipse.pde.PluginNature</nature>
        </natures>
 </projectDescription>
index c41846e272340580df9b2b2b9b09ba99df949a3f..e1edaff0ba5b1a153eca844025964e01facb8feb 100644 (file)
@@ -1,4 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
                <groupId>org.argeo.slc</groupId>
                                <version>${version.maven-bundle-plugin}</version>
                                <configuration>
                                        <instructions>
+                                               <Fragment-Host>org.argeo.dep.osgi.maven.embedder</Fragment-Host>
                                                <Export-Package>
                                                        org.argeo.slc.maven.*
                                                </Export-Package>
-                                               <Import-Package>*,org.codehaus.plexus;resolution:="optional"</Import-Package>
-                                               <!-- <Fragment-Host>org.argeo.dep.osgi.maven.embedder</Fragment-Host> -->
                                        </instructions>
                                </configuration>
                        </plugin>
                        <artifactId>commons-logging</artifactId> </exclusion> </exclusions>
                        </dependency>
                -->
+               <dependency>
+                       <groupId>org.argeo.dep.osgi</groupId>
+                       <artifactId>org.argeo.dep.osgi.maven.embedder</artifactId>
+                       <version>2.0.4.0002</version>
+               </dependency>
        </dependencies>
 </project>
index d3949a200da1955bf4be4108d635e81c10740f72..50717fae6ac9834ba6c9865cd5dec625f95130b3 100644 (file)
@@ -1,9 +1,18 @@
 package org.argeo.slc.maven;
 
+import java.io.File;
+import java.net.URL;
+import java.util.Map;
+import java.util.Properties;
+import java.util.UUID;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.argeo.slc.SlcException;
 import org.argeo.slc.deploy.DeployEnvironment;
 
 public abstract class MavenDeployEnvironment implements DeployEnvironment {
-/*     private static final Log log = LogFactory
+       private static final Log log = LogFactory
                        .getLog(MavenDeployEnvironment.class);
        private MavenManager mavenManager;
 
@@ -41,13 +50,13 @@ public abstract class MavenDeployEnvironment implements DeployEnvironment {
                        URL antUrl = getClass().getClassLoader().getResource(
                                        "org/argeo/slc/support/deploy/ant/build.xml");
 
-//                     if (type == null || type.equals("zip")) {
-//                             new AntRunner(antUrl, "deployZip", props).run();
-//                     } else if (type.equals("tar.gz")) {
-//                             new AntRunner(antUrl, "deployTarGz", props).run();
-//                     } else {
-//                             throw new SlcException("Unknow package type " + type);
-//                     }
+                       // if (type == null || type.equals("zip")) {
+                       // new AntRunner(antUrl, "deployZip", props).run();
+                       // } else if (type.equals("tar.gz")) {
+                       // new AntRunner(antUrl, "deployTarGz", props).run();
+                       // } else {
+                       // throw new SlcException("Unknow package type " + type);
+                       // }
                        throw new SlcException("Not implemented.");
                } catch (SlcException e) {
                        throw e;
@@ -60,5 +69,5 @@ public abstract class MavenDeployEnvironment implements DeployEnvironment {
        public void setMavenManager(MavenManager mavenManager) {
                this.mavenManager = mavenManager;
        }
-*/
+
 }
index 20120bdf77127e7b3368f3e18aef8b75438f5672..b49a911bd5649891771b1ca6dd12b9c49da72d32 100644 (file)
@@ -1,8 +1,19 @@
 package org.argeo.slc.maven;\r
 \r
+import java.io.File;\r
+import java.util.List;\r
+import java.util.Vector;\r
+\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+import org.apache.maven.artifact.Artifact;\r
+import org.apache.maven.artifact.repository.ArtifactRepository;\r
+import org.apache.maven.embedder.MavenEmbedder;\r
+import org.apache.maven.embedder.MavenEmbedderException;\r
+import org.argeo.slc.SlcException;\r
 \r
 public class MavenManager {\r
-       /*\r
+\r
        private final Log log = LogFactory.getLog(getClass());\r
 \r
        private String localRepositoryPath = System.getProperty("user.home")\r
@@ -13,13 +24,20 @@ public class MavenManager {
        private List<RemoteRepository> remoteRepositories = new Vector<RemoteRepository>();\r
 \r
        private MavenEmbedder mavenEmbedder;\r
+       private ClassLoader classLoader;\r
+       private Boolean offline = false;\r
 \r
        public void init() {\r
                try {\r
                        mavenEmbedder = new MavenEmbedder();\r
-                       mavenEmbedder.setOffline(true);\r
-                       mavenEmbedder.setClassLoader(Thread.currentThread()\r
-                                       .getContextClassLoader());\r
+                       mavenEmbedder.setOffline(offline);\r
+                       if (classLoader != null)\r
+                               mavenEmbedder.setClassLoader(classLoader);\r
+                       else\r
+                               mavenEmbedder.setClassLoader(getClass().getClassLoader());\r
+                       // else\r
+                       // mavenEmbedder.setClassLoader(Thread.currentThread()\r
+                       // .getContextClassLoader());\r
                        mavenEmbedder.start();\r
 \r
                        mavenEmbedder.setLocalRepositoryDirectory(new File(\r
@@ -34,16 +52,18 @@ public class MavenManager {
                                                remoteRepository.getUrl(), remoteRepository.getId());\r
                                remoteRepositoriesInternal.add(repository);\r
                        }\r
-                       \r
+\r
                        MavenFile mavenFile = new MavenFile();\r
-                       mavenFile.setGroupId("org.argeo.slc.runtime");\r
-                       mavenFile.setArtifactId("org.argeo.slc.specs");\r
-                       mavenFile.setVersion("0.11.3-SNAPSHOT");\r
+                       mavenFile.setGroupId("org.argeo.slc.dist");\r
+                       mavenFile.setArtifactId("org.argeo.slc.sdk");\r
+                       mavenFile.setVersion("0.12.2-SNAPSHOT");\r
+                       mavenFile.setType("pom");\r
                        Artifact artifact = resolve(mavenFile);\r
-                       log.debug("Dependencies of "+artifact);\r
-                       for(Object obj : artifact.getDependencyTrail()){\r
-                               log.debug("  "+obj);\r
-                       }\r
+                       log.debug("Location of " + artifact + " : " + artifact.getFile());\r
+//                     log.debug("Dependencies of " + artifact);\r
+//                     for (Object obj : artifact.getDependencyTrail()) {\r
+//                             log.debug("  " + obj);\r
+//                     }\r
 \r
                } catch (Exception e) {\r
                        throw new SlcException("Cannot initialize Maven manager", e);\r
@@ -100,5 +120,13 @@ public class MavenManager {
        public void setRemoteRepositories(List<RemoteRepository> remoteRepositories) {\r
                this.remoteRepositories = remoteRepositories;\r
        }\r
-*/\r
+\r
+       public void setClassLoader(ClassLoader classLoader) {\r
+               this.classLoader = classLoader;\r
+       }\r
+\r
+       public void setOffline(Boolean offline) {\r
+               this.offline = offline;\r
+       }\r
+\r
 }\r