Author: jlmonteiro
Date: Mon Jan 25 13:19:53 2010
New Revision: 902804

URL: http://svn.apache.org/viewvc?rev=902804&view=rev
Log:
small example using exec plugin to call OpenEJB commands

Added:
    openejb/trunk/sandbox/maven-openejb-plugin/pom.properties
    openejb/trunk/sandbox/maven-openejb-plugin/pom.xml
    openejb/trunk/sandbox/maven-openejb-plugin/src/
    openejb/trunk/sandbox/maven-openejb-plugin/src/main/
    openejb/trunk/sandbox/maven-openejb-plugin/src/main/java/
    openejb/trunk/sandbox/maven-openejb-plugin/src/main/java/org/
    openejb/trunk/sandbox/maven-openejb-plugin/src/main/java/org/apache/
    openejb/trunk/sandbox/maven-openejb-plugin/src/main/java/org/apache/maven/
    
openejb/trunk/sandbox/maven-openejb-plugin/src/main/java/org/apache/maven/plugins/
    
openejb/trunk/sandbox/maven-openejb-plugin/src/main/java/org/apache/maven/plugins/AbstractOpenEJBMojo.java
    
openejb/trunk/sandbox/maven-openejb-plugin/src/main/java/org/apache/maven/plugins/RunMojo.java
    
openejb/trunk/sandbox/maven-openejb-plugin/src/main/java/org/apache/maven/plugins/StartMojo.java

Added: openejb/trunk/sandbox/maven-openejb-plugin/pom.properties
URL: 
http://svn.apache.org/viewvc/openejb/trunk/sandbox/maven-openejb-plugin/pom.properties?rev=902804&view=auto
==============================================================================
--- openejb/trunk/sandbox/maven-openejb-plugin/pom.properties (added)
+++ openejb/trunk/sandbox/maven-openejb-plugin/pom.properties Mon Jan 25 
13:19:53 2010
@@ -0,0 +1,5 @@
+#Generated by Maven
+#Wed Sep 30 10:50:34 CEST 2009
+version=1.0.0-SNAPSHOT
+groupId=org.apache.maven.plugins
+artifactId=maven-openejb-plugin

Added: openejb/trunk/sandbox/maven-openejb-plugin/pom.xml
URL: 
http://svn.apache.org/viewvc/openejb/trunk/sandbox/maven-openejb-plugin/pom.xml?rev=902804&view=auto
==============================================================================
--- openejb/trunk/sandbox/maven-openejb-plugin/pom.xml (added)
+++ openejb/trunk/sandbox/maven-openejb-plugin/pom.xml Mon Jan 25 13:19:53 2010
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="UTF-8"?>
+    <!--
+
+        Licensed to the Apache Software Foundation (ASF) under one or more
+        contributor license agreements. See the NOTICE file distributed with
+        this work for additional information regarding copyright ownership. The
+        ASF licenses this file to You under the Apache License, Version 2.0 
(the
+        "License"); you may not use this file except in compliance with the
+        License. You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0 Unless required by 
applicable
+        law or agreed to in writing, software distributed under the License is
+        distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF 
ANY
+        KIND, either express or implied. See the License for the specific
+        language governing permissions and limitations under the License.
+    -->
+
+    <!-- $Rev$ -->
+
+<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.apache.maven.plugins</groupId>
+        <artifactId>maven-plugins</artifactId>
+        <version>14</version>
+    </parent>
+
+    <artifactId>maven-openejb-plugin</artifactId>
+    <packaging>maven-plugin</packaging>
+
+    <version>1.0.0-SNAPSHOT</version>
+
+    <name>Maven OpenEJB Plugin</name>
+    <description>
+        The OpenEJB Plugin is used to start/stop/deploy/undeploy. 
+        In other words, it's used to manage Apache OpenEJB container.
+    </description>
+    <inceptionYear>2009</inceptionYear>
+
+    <organization>
+        <name>The Apache OpenEJB development community</name>
+        <url>http://openejb.apache.org</url>
+    </organization>
+    
+    <!-- 
+        TODO
+            Add issueManagement
+            Add mailingLists
+            Add ciManagement
+            Add scm
+    -->
+    
+    <build>
+        <defaultGoal>install</defaultGoal>
+    
+    
+        <plugins>
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.5</source>
+                    <target>1.5</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <forkMode>always</forkMode>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+    <dependencies>
+        <!-- Maven2 -->
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-plugin-api</artifactId>
+            <version>2.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-artifact</artifactId>
+            <version>2.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-project</artifactId>
+            <version>2.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-model</artifactId>
+            <version>2.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-artifact-manager</artifactId>
+            <version>2.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-core</artifactId>
+            <version>2.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.codehaus.mojo</groupId>
+            <artifactId>exec-maven-plugin</artifactId>
+            <version>1.1.1</version>
+        </dependency>
+    
+        <!-- JUnit -->
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>3.8.1</version>
+            <scope>test</scope>
+        </dependency>
+        
+        <!-- OpenEJB -->
+        <dependency>
+            <groupId>commons-cli</groupId>
+            <artifactId>commons-cli</artifactId>
+            <version>1.2</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.openejb</groupId>
+            <artifactId>openejb-core</artifactId>
+            <version>3.1.3-SNAPSHOT</version>
+        </dependency>
+        <!-- optional - provide start/stop command -->
+        <dependency>
+            <groupId>org.apache.openejb</groupId>
+            <artifactId>openejb-server</artifactId>
+            <version>3.1.3-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+</project>

Added: 
openejb/trunk/sandbox/maven-openejb-plugin/src/main/java/org/apache/maven/plugins/AbstractOpenEJBMojo.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/sandbox/maven-openejb-plugin/src/main/java/org/apache/maven/plugins/AbstractOpenEJBMojo.java?rev=902804&view=auto
==============================================================================
--- 
openejb/trunk/sandbox/maven-openejb-plugin/src/main/java/org/apache/maven/plugins/AbstractOpenEJBMojo.java
 (added)
+++ 
openejb/trunk/sandbox/maven-openejb-plugin/src/main/java/org/apache/maven/plugins/AbstractOpenEJBMojo.java
 Mon Jan 25 13:19:53 2010
@@ -0,0 +1,36 @@
+package org.apache.maven.plugins;
+
+import org.codehaus.mojo.exec.AbstractExecMojo;
+
+/**
+ * This abstract mojo is used by all mojos Deploy/Undeploy/Start/Stop
+ * 
+ * @author <a href="mailto:[email protected]";>Jean-Louis MONTEIRO</a>
+ * @version $Id$
+ * @since 2.0
+ */
+public abstract class AbstractOpenEJBMojo extends AbstractExecMojo {
+    
+    // ----- PARAMETERS -----
+    /**
+     * Target OpenEJB command to execute.
+     * 
+     * @parameter expression="${openejb.command}"
+     */
+    protected String command;
+    
+    /**
+     * OpenEJB Home
+     * 
+     * @parameter expression="${openejb.home}" default-value="${basedir}"
+     */
+    protected String openejbHome;
+
+    /**
+     * OpenEJB Base
+     * 
+     * @parameter expression="${openejb.base}" default-value="${basedir}"
+     */
+    protected String openejbBase;
+    
+}

Added: 
openejb/trunk/sandbox/maven-openejb-plugin/src/main/java/org/apache/maven/plugins/RunMojo.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/sandbox/maven-openejb-plugin/src/main/java/org/apache/maven/plugins/RunMojo.java?rev=902804&view=auto
==============================================================================
--- 
openejb/trunk/sandbox/maven-openejb-plugin/src/main/java/org/apache/maven/plugins/RunMojo.java
 (added)
+++ 
openejb/trunk/sandbox/maven-openejb-plugin/src/main/java/org/apache/maven/plugins/RunMojo.java
 Mon Jan 25 13:19:53 2010
@@ -0,0 +1,36 @@
+package org.apache.maven.plugins;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.openejb.cli.Bootstrap;
+
+/**
+ * Goal which delegates commands to OpenEJB.
+ *
+ * @goal run
+ * @phase test
+ */
+public class RunMojo extends AbstractOpenEJBMojo {
+    
+    public void execute() throws MojoExecutionException {
+        getLog().info("[Run] Enterring execute");
+        getLog().info("[Run] openejb.home=" + openejbHome);
+        getLog().info("[Run] openejb.base=" + openejbBase);
+        
+        Set<String> argsSet = new HashSet<String>();
+        argsSet.add(String.format("-Dopenejb.home=%s", openejbHome));
+        argsSet.add(String.format("-Dopenejb.base=%s", openejbBase));
+        if (hasCommandlineArgs()) {
+            argsSet.addAll(Arrays.asList(parseCommandlineArgs()));
+        }
+        
+        try {
+            Bootstrap.main((String[]) argsSet.toArray(new 
String[argsSet.size()]));
+        } catch (Exception e) {
+            throw new MojoExecutionException("Error while running OpenEJB run 
command", e);
+        }
+    }
+}

Added: 
openejb/trunk/sandbox/maven-openejb-plugin/src/main/java/org/apache/maven/plugins/StartMojo.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/sandbox/maven-openejb-plugin/src/main/java/org/apache/maven/plugins/StartMojo.java?rev=902804&view=auto
==============================================================================
--- 
openejb/trunk/sandbox/maven-openejb-plugin/src/main/java/org/apache/maven/plugins/StartMojo.java
 (added)
+++ 
openejb/trunk/sandbox/maven-openejb-plugin/src/main/java/org/apache/maven/plugins/StartMojo.java
 Mon Jan 25 13:19:53 2010
@@ -0,0 +1,49 @@
+package org.apache.maven.plugins;
+
+import java.io.File;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.openejb.cli.Bootstrap;
+
+import edu.emory.mathcs.backport.java.util.Arrays;
+
+/**
+ * Goal which starts OpenEJB before launching tests.
+ *
+ * @goal start
+ * @phase test
+ */
+public class StartMojo extends AbstractOpenEJBMojo {
+    
+    /**
+     * Location of the file.
+     * @parameter expression="${project.build.directory}"
+     * @required
+     */
+    private File outputDirectory;
+
+    public void execute() throws MojoExecutionException {
+        getLog().info("[Start] Enterring execute");
+        getLog().info("[Start] openejb.home=" + openejbHome);
+        getLog().info("[Start] openejb.base=" + openejbBase);
+        
+        Set<String> argsSet = new HashSet<String>();
+        argsSet.add(String.format("-Dopenejb.home=%s", openejbHome));
+        argsSet.add(String.format("-Dopenejb.base=%s", openejbBase));
+        if (hasCommandlineArgs()) {
+            argsSet.addAll(Arrays.asList(parseCommandlineArgs()));
+        }
+        
+        // set the command to start
+        argsSet.add("start");
+        
+        try {
+            Bootstrap.main((String[]) argsSet.toArray(new 
String[argsSet.size()]));
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new MojoExecutionException("Error while running OpenEJB 
Start command", e);
+        }
+    }
+}


Reply via email to