You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2012/01/10 00:47:21 UTC

svn commit: r1229420 - in /openejb/trunk/maven-plugins: pom.xml tomee-maven-plugin/pom.xml tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/RunTomEEMojo.java

Author: rmannibucau
Date: Mon Jan  9 23:47:20 2012
New Revision: 1229420

URL: http://svn.apache.org/viewvc?rev=1229420&view=rev
Log:
making tomee:run working and logging

Modified:
    openejb/trunk/maven-plugins/pom.xml
    openejb/trunk/maven-plugins/tomee-maven-plugin/pom.xml
    openejb/trunk/maven-plugins/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/RunTomEEMojo.java

Modified: openejb/trunk/maven-plugins/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/maven-plugins/pom.xml?rev=1229420&r1=1229419&r2=1229420&view=diff
==============================================================================
--- openejb/trunk/maven-plugins/pom.xml (original)
+++ openejb/trunk/maven-plugins/pom.xml Mon Jan  9 23:47:20 2012
@@ -35,16 +35,6 @@
     <dependencies>
       <dependency>
         <groupId>org.apache.maven</groupId>
-        <artifactId>maven-model</artifactId>
-        <version>${maven.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.maven</groupId>
-        <artifactId>maven-core</artifactId>
-        <version>${maven.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.maven</groupId>
         <artifactId>maven-plugin-api</artifactId>
         <version>${maven.version}</version>
       </dependency>
@@ -59,16 +49,6 @@
         <version>${maven.version}</version>
       </dependency>
       <dependency>
-        <groupId>org.apache.maven</groupId>
-        <artifactId>maven-artifact-manager</artifactId>
-        <version>${maven.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.maven</groupId>
-        <artifactId>maven-archiver</artifactId>
-        <version>2.4.1</version>
-      </dependency>
-      <dependency>
         <groupId>org.sonatype.aether</groupId>
         <artifactId>aether-api</artifactId>
         <version>1.8</version>

Modified: openejb/trunk/maven-plugins/tomee-maven-plugin/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/maven-plugins/tomee-maven-plugin/pom.xml?rev=1229420&r1=1229419&r2=1229420&view=diff
==============================================================================
--- openejb/trunk/maven-plugins/tomee-maven-plugin/pom.xml (original)
+++ openejb/trunk/maven-plugins/tomee-maven-plugin/pom.xml Mon Jan  9 23:47:20 2012
@@ -34,14 +34,6 @@
   <dependencies>
     <dependency>
       <groupId>org.apache.maven</groupId>
-      <artifactId>maven-model</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-core</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
     </dependency>
     <dependency>
@@ -53,14 +45,6 @@
       <artifactId>maven-artifact</artifactId>
     </dependency>
     <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-artifact-manager</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-archiver</artifactId>
-    </dependency>
-    <dependency>
       <groupId>org.sonatype.aether</groupId>
       <artifactId>aether-api</artifactId>
     </dependency>

Modified: openejb/trunk/maven-plugins/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/RunTomEEMojo.java
URL: http://svn.apache.org/viewvc/openejb/trunk/maven-plugins/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/RunTomEEMojo.java?rev=1229420&r1=1229419&r2=1229420&view=diff
==============================================================================
--- openejb/trunk/maven-plugins/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/RunTomEEMojo.java (original)
+++ openejb/trunk/maven-plugins/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/RunTomEEMojo.java Mon Jan  9 23:47:20 2012
@@ -18,21 +18,24 @@ package org.apache.openejb.maven.plugin;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.resolver.ArtifactCollector;
+import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
+import org.apache.maven.artifact.repository.DefaultArtifactRepository;
+import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
 import org.apache.maven.artifact.resolver.ArtifactResolver;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.project.MavenProject;
-import org.codehaus.plexus.archiver.manager.ArchiverManager;
 
+import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.FileWriter;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.InputStreamReader;
 import java.io.OutputStream;
+import java.util.Arrays;
 import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.List;
@@ -41,6 +44,9 @@ import java.util.zip.ZipEntry;
 import java.util.zip.ZipFile;
 
 import static org.apache.maven.artifact.Artifact.SCOPE_COMPILE;
+import static org.apache.maven.artifact.repository.ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN;
+import static org.apache.maven.artifact.repository.ArtifactRepositoryPolicy.UPDATE_POLICY_DAILY;
+import static org.apache.maven.artifact.repository.ArtifactRepositoryPolicy.UPDATE_POLICY_NEVER;
 import static org.apache.maven.artifact.versioning.VersionRange.createFromVersion;
 import static org.codehaus.plexus.util.IOUtil.close;
 import static org.codehaus.plexus.util.IOUtil.copy;
@@ -51,13 +57,6 @@ import static org.codehaus.plexus.util.I
  */
 public class RunTomEEMojo extends AbstractMojo {
     /**
-     * @parameter expression="${project}"
-     * @required
-     * @readonly
-     */
-    protected MavenProject mavenProject;
-
-    /**
      * @component
      */
     protected ArtifactFactory factory;
@@ -68,13 +67,6 @@ public class RunTomEEMojo extends Abstra
     protected ArtifactResolver resolver;
 
     /**
-     * @component role="org.apache.maven.artifact.resolver.ArtifactCollector"
-     * @required
-     * @readonly
-     */
-    protected ArtifactCollector artifactCollector;
-
-    /**
      * @parameter expression="${localRepository}"
      * @readonly
      * @required
@@ -89,12 +81,7 @@ public class RunTomEEMojo extends Abstra
     protected List<ArtifactRepository> remoteRepos;
 
     /**
-     * @component
-     */
-    protected ArchiverManager archiverManager;
-
-    /**
-     * @parameter expression="${tomee-plugin.version}" default-value="1.0.0-beta-2"
+     * @parameter expression="${tomee-plugin.version}" default-value="1.0.0-beta-2-SNAPSHOT"
      */
     protected String tomeeVersion;
 
@@ -115,6 +102,11 @@ public class RunTomEEMojo extends Abstra
     protected String tomeeType;
 
     /**
+     * @parameter expression="${tomee-plugin.apache-repos}" default-value="snapshots"
+     */
+    protected String apacheRepos;
+
+    /**
      * @parameter expression="${tomee-plugin.classifier}" default-value="webprofile"
      */
     protected String tomeeClassifier;
@@ -140,12 +132,24 @@ public class RunTomEEMojo extends Abstra
     protected String tomeeCmd;
 
     /**
+     * @parameter expression="${tomee-plugin.args}"
+     */
+    protected String args;
+
+    /**
      * @parameter default-value="${project.build.directory}/apache-tomee"
      * @readonly
      */
     protected File catalinaBase;
 
     /**
+     * relative to tomee.base.
+     *
+     * @parameter default-value="webapps"
+     */
+    protected String webappDir;
+
+    /**
      * @parameter expression="${tomee-plugin.conf}" default-value="${basedir}/src/main/tomee/conf"
      * @optional
      */
@@ -158,15 +162,15 @@ public class RunTomEEMojo extends Abstra
     protected File bin;
 
     /**
-     * @parameter default-value="${project.build.directory}/${project.build.finalName}"
-     * @readonly
+     * @parameter
      */
-    protected File webappOutputDirectory;
+    protected Map<String, String> systemVariables = new HashMap<String, String>();
 
     /**
-     * @parameter
+     * @parameter default-value="${project.build.directory}/${project.build.finalName}.${project.packaging}"
+     * @readonly
      */
-    protected Map<String, String> systemVariables = new HashMap<String, String>();
+    protected File warFile;
 
 
     @Override
@@ -174,11 +178,27 @@ public class RunTomEEMojo extends Abstra
         unzip(resolve(), catalinaBase);
         overrideConf(config);
         overrideConf(bin);
-        overridePorts();
+        overrideAddresses();
+        copyWar();
         run();
     }
 
-    private void overridePorts() {
+    private void copyWar() {
+        InputStream is = null;
+        OutputStream os = null;
+        try {
+            is = new FileInputStream(warFile);
+            os = new FileOutputStream(new File(catalinaBase, webappDir + "/" + warFile.getName()));
+            copy(is, os);
+        } catch (Exception e) {
+            throw new TomEEException(e.getMessage(), e);
+        } finally {
+            close(is);
+            close(os);
+        }
+    }
+
+    private void overrideAddresses() {
         final File serverXml = new File(catalinaBase, "conf/server.xml");
         final String value = read(serverXml);
 
@@ -187,7 +207,9 @@ public class RunTomEEMojo extends Abstra
             writer = new FileWriter(serverXml);
             writer.write(value
                     .replace("8080", Integer.toString(tomeeHttpPort))
-                    .replace("8005", Integer.toString(tomeeShutdownPort)));
+                    .replace("8005", Integer.toString(tomeeShutdownPort))
+                    .replace("localhost", tomeeHost)
+                    .replace("webapps", webappDir));
             writer.close();
         } catch (IOException e) {
             throw new TomEEException(e.getMessage(), e);
@@ -240,29 +262,40 @@ public class RunTomEEMojo extends Abstra
     }
 
     private void run() {
+        final Process process;
         try {
-            baseProcessBuilder()
-                .command(java(),
-                        "-javaagent:" + new File(catalinaBase, "lib/openejb-javaagent.jar").getAbsolutePath(),
-                        "-cp", cp(), "org.apache.catalina.startup.Bootstrap", tomeeCmd)
-                .start().waitFor();
+            final ProcessBuilder builder = baseProcessBuilder();
+            builder.command(java(),
+                    "-javaagent:" + new File(catalinaBase, "lib/openejb-javaagent.jar").getAbsolutePath(),
+                    "-cp", cp());
+            if (args != null && args.length() > 0) {
+                builder.command().addAll(Arrays.asList(args.split(" ")));
+            }
+            builder.command().addAll(Arrays.asList("org.apache.catalina.startup.Bootstrap", tomeeCmd));
+            builder.redirectErrorStream(true);
+            process = builder.start();
         } catch (Exception e) {
             throw new TomEEException(e.getMessage(), e);
         }
 
-        Runtime.getRuntime().addShutdownHook(new Thread() {
-            @Override
-            public void run() {
-                try {
-                    baseProcessBuilder()
-                            .command(java(), "-cp", cp(), "org.apache.catalina.startup.Bootstrap", "stop")
-                            .start()
-                            .waitFor();
-                } catch (Exception e) {
-                    throw new TomEEException(e.getMessage(), e);
-                }
+        final InputStream is = process.getInputStream();
+        final BufferedReader br = new BufferedReader(new InputStreamReader(is));
+        String line;
+        do {
+            try {
+                line = br.readLine();
+                getLog().info(line);
+            } catch (IOException e) {
+                line = null;
             }
-        });
+        } while (line != null);
+
+        Runtime.getRuntime().addShutdownHook(new ShutdownThread());
+        try {
+            process.waitFor();
+        } catch (InterruptedException e) {
+            throw new TomEEException(e.getMessage(), e);
+        }
     }
 
     private static String java() {
@@ -294,11 +327,17 @@ public class RunTomEEMojo extends Abstra
             cpSep = ';';
         }
 
-        return new File(catalinaBase, "bin/bootstrap.jar").getAbsolutePath()
-                + cpSep + new File(catalinaBase, "bin/tomcat-juli.jar").getAbsolutePath();
+        return "bin/bootstrap.jar" + cpSep + "bin/tomcat-juli.jar";
     }
 
     private File resolve() {
+        if ("snapshots".equals(apacheRepos) || "true".equals(apacheRepos)) {
+            remoteRepos.add(new DefaultArtifactRepository("apache", "https://repository.apache.org/content/repositories/snapshots/",
+            new DefaultRepositoryLayout(),
+            new ArtifactRepositoryPolicy(true, UPDATE_POLICY_DAILY , CHECKSUM_POLICY_WARN),
+            new ArtifactRepositoryPolicy(false, UPDATE_POLICY_NEVER , CHECKSUM_POLICY_WARN)));
+        }
+
         try {
             final Artifact artifact = factory.createDependencyArtifact(tomeeGroupId, tomeeArtifactId, createFromVersion(tomeeVersion), tomeeType, tomeeClassifier, SCOPE_COMPILE);
             resolver.resolve(artifact, remoteRepos, local);
@@ -330,7 +369,10 @@ public class RunTomEEMojo extends Abstra
                 }
                 final File dest = new File(catalinaBase.getAbsolutePath(), name);
                 if (!dest.exists()) {
-                    dest.getParentFile().mkdirs();
+                    final File parent = dest.getParentFile();
+                    parent.mkdirs();
+                    parent.setWritable(true);
+                    parent.setReadable(true);
                 }
                 if (entry.isDirectory()) {
                     dest.mkdir();
@@ -342,6 +384,11 @@ public class RunTomEEMojo extends Abstra
                         // ignored
                     }
                     close(fos);
+
+                    dest.setReadable(true);
+                    if (dest.getName().endsWith(".sh")) {
+                        dest.setExecutable(true);
+                    }
                 }
             }
         } catch (Exception e) {
@@ -356,4 +403,17 @@ public class RunTomEEMojo extends Abstra
             }
         }
     }
+
+    private class ShutdownThread extends Thread {
+        @Override public void run() {
+            try {
+                baseProcessBuilder()
+                        .command(java(), "-cp", cp(), "org.apache.catalina.startup.Bootstrap", "stop")
+                        .start()
+                        .waitFor();
+            } catch (Exception e) {
+                throw new TomEEException(e.getMessage(), e);
+            }
+        }
+    }
 }