Thanks...I'll get to it.

Jeff Smith wrote:
> I re-opened this because my initial patch did not contain everything it
> needed. I added another patch to the jira.
> 
> -jeff
> 
> On Feb 22, 2006, at 11:03 AM, Jeff Smith wrote:
> 
>> Done. Thanks.
>>
>> http://jira.codehaus.org/browse/MPJBOSS-25
>>
>> On Feb 22, 2006, at 9:45 AM, Jeff Genender wrote:
>>
>>> Hi Jeff,
>>>
>>> Thanks for the patch.  Could you please open a JIRA on this?
>>>
>>> Thanks,
>>>
>>> Jeff
>>>
>>> Jeff Smith wrote:
>>>> Thought I'd forward this to the dev list as well.
>>>>
>>>> Begin forwarded message:
>>>>
>>>>> *From: *Jeff Smith <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>
>>>>> *Date: *February 17, 2006 11:14:47 AM MST
>>>>> *To: [EMAIL PROTECTED] <mailto:[email protected]>
>>>>> *Subject: **Re: [mojo-user] JBoss Plugin*
>>>>>
>>>>> Here is the patch.
>>>>>
>>>>> -jeff
>>>>>
>>>>
>>>> ------------------------------------------------------------------------
>>>>
>>>>
>>>> Index: src/main/java/org/codehaus/mojo/jboss/StartMojo.java
>>>> ===================================================================
>>>> --- src/main/java/org/codehaus/mojo/jboss/StartMojo.java   
>>>> (revision 1497)
>>>> +++ src/main/java/org/codehaus/mojo/jboss/StartMojo.java    (working
>>>> copy)
>>>> @@ -19,7 +19,7 @@
>>>>  import org.apache.maven.plugin.MojoExecutionException;
>>>>
>>>>  /**
>>>> - * Starts JBoss in the background
>>>> + * Starts JBoss
>>>>   *
>>>>   * @author <a href="mailto:[EMAIL PROTECTED]">Jeff Genender</a>
>>>>   * @goal start
>>>> Index: src/main/java/org/codehaus/mojo/jboss/ConfigureJBossMojo.java
>>>> ===================================================================
>>>> --- src/main/java/org/codehaus/mojo/jboss/ConfigureJBossMojo.java   
>>>> (revision 0)
>>>> +++ src/main/java/org/codehaus/mojo/jboss/ConfigureJBossMojo.java   
>>>> (revision 0)
>>>> @@ -0,0 +1,295 @@
>>>> +/*
>>>> + * Licensed 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.
>>>> + */
>>>> +package org.codehaus.mojo.jboss;
>>>> +
>>>> +import org.apache.maven.plugin.MojoExecutionException;
>>>> +import org.apache.maven.plugin.MojoFailureException;
>>>> +import org.apache.velocity.app.VelocityEngine;
>>>> +import org.apache.velocity.Template;
>>>> +import org.apache.velocity.VelocityContext;
>>>> +import
>>>> org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader;
>>>> +import org.codehaus.plexus.util.FileUtils;
>>>> +
>>>> +import java.io.File;
>>>> +import java.io.IOException;
>>>> +import java.io.FileWriter;
>>>> +import java.util.Properties;
>>>> +
>>>> +/**
>>>> + * ConfigureJBossMojo
>>>> +
>>>> + * @goal configure
>>>> + */
>>>> +public class ConfigureJBossMojo extends AbstractJBossMojo
>>>> +{
>>>> +    //CONSTANTS
>>>> +
>>>> +    private static final String SERVER_DIR_NAME = "server";
>>>> +
>>>> +    //STATIC VARIABLES
>>>> +
>>>> +    //INSTANCE VARIABLES
>>>> +
>>>> +    private File jbossHomeDir;
>>>> +
>>>> +    /**
>>>> +     * The directory for overrides to the conf diretory
>>>> +     * @parameter expression="${basedir}/jboss/conf"
>>>> +     */
>>>> +    private File confDir;
>>>> +
>>>> +    /**
>>>> +     * The directory for overrides to the lib diretory
>>>> +     * @parameter expression="${basedir}/jboss/lib"
>>>> +     */
>>>> +    private File libDir;
>>>> +
>>>> +    /**
>>>> +     * The directory for overrides to the deploy diretory
>>>> +     * @parameter expression="${basedir}/jboss/conf"
>>>> +     */
>>>> +    private File deployDir;
>>>> +
>>>> +    //CONSTRUCTING
>>>> +
>>>> +    /**
>>>> +     * Constructs a ConfigureJBossMojo.
>>>> +     */
>>>> +    public ConfigureJBossMojo() {
>>>> +        super();
>>>> +    }
>>>> +
>>>> +    //STATIC METHODS
>>>> +
>>>> +    //INITIALIZING
>>>> +
>>>> +    //MOJO
>>>> +
>>>> +    public void execute() throws MojoExecutionException,
>>>> MojoFailureException
>>>> +    {
>>>> +        checkConfig();
>>>> +        jbossHomeDir = new File(jbossHome);
>>>> +        checkJBossHome();
>>>> +
>>>> +        File serverDir = new File(outputDirectory.getAbsolutePath()
>>>> + File.separator + serverName);
>>>> +
>>>> +        checkOutputDirectory(serverDir);
>>>> +        copyBaseConfDir(serverDir);
>>>> +        copyBaseDeployDir(serverDir);
>>>> +        copyBaseLibDir(serverDir);
>>>> +        overlayConfDir(serverDir);
>>>> +        overlayDeployDir(serverDir);
>>>> +        overlayLibDir(serverDir);
>>>> +        buildBinDir(serverDir);
>>>> +    }
>>>> +
>>>> +    //ACCESSING
>>>> +
>>>> +    //COMPARING
>>>> +
>>>> +    //DISPLAYING
>>>> +
>>>> +    //UTILITY
>>>> +
>>>> +    private void checkJBossHome() throws MojoFailureException
>>>> +    {
>>>> +        if(!jbossHomeDir.exists())
>>>> +        {
>>>> +            throw new MojoFailureException("The jbossHome specifed
>>>> does not exist.");
>>>> +        }
>>>> +
>>>> +        File serverParentDir = new
>>>> File(jbossHomeDir.getAbsolutePath() + File.separator +
>>>> SERVER_DIR_NAME);
>>>> +
>>>> +        if(!serverParentDir.exists())
>>>> +        {
>>>> +            throw new
>>>> MojoFailureException(jbossHomeDir.getAbsolutePath() + " does not
>>>> appear to be a valid jboss home");
>>>> +        }
>>>> +
>>>> +        File serverDir = new File(serverParentDir.getAbsolutePath()
>>>> + File.separator + serverName);
>>>> +
>>>> +        if(!serverDir.exists())
>>>> +        {
>>>> +            throw new MojoFailureException(serverName + " is not a
>>>> valid server in " + serverParentDir.getAbsolutePath());
>>>> +        }
>>>> +    }
>>>> +
>>>> +    private void checkOutputDirectory(File serverDir) throws
>>>> MojoFailureException
>>>> +    {
>>>> +        if(outputDirectory ==  null)
>>>> +        {
>>>> +            throw new MojoFailureException("I don't know how you
>>>> did it, but the outputDirectory is null");
>>>> +        }
>>>> +
>>>> +        if(!outputDirectory.exists())
>>>> +        {
>>>> +            outputDirectory.mkdirs();
>>>> +        }
>>>> +
>>>> +        if(!serverDir.exists())
>>>> +        {
>>>> +            serverDir.mkdir();
>>>> +        }
>>>> +    }
>>>> +
>>>> +    private void copyBaseConfDir(File serverDir) throws
>>>> MojoExecutionException
>>>> +    {
>>>> +        copyBaseDir(serverDir, "conf");
>>>> +    }
>>>> +
>>>> +    private void copyBaseLibDir(File serverDir) throws
>>>> MojoExecutionException
>>>> +    {
>>>> +        copyBaseDir(serverDir, "lib");
>>>> +    }
>>>> +
>>>> +    private void copyBaseDeployDir(File serverDir) throws
>>>> MojoExecutionException
>>>> +    {
>>>> +        copyBaseDir(serverDir, "deploy");
>>>> +    }
>>>> +
>>>> +    private void copyBaseDir(File serverDir, String dirName) throws
>>>> MojoExecutionException
>>>> +    {
>>>> +        File baseDir = new File(jbossHome + File.separator +
>>>> SERVER_DIR_NAME + File.separator + serverName + File.separator +
>>>> dirName);
>>>> +        File dir = new File(serverDir.getAbsolutePath() +
>>>> File.separator + dirName);
>>>> +        try
>>>> +        {
>>>> +            FileUtils.copyDirectoryStructure(baseDir, dir);
>>>> +        }
>>>> +        catch (IOException e)
>>>> +        {
>>>> +            throw new MojoExecutionException("Could Not Copy " +
>>>> dirName + " Dir", e);
>>>> +        }
>>>> +    }
>>>> +
>>>> +    private void overlayConfDir(File serverDir) throws
>>>> MojoExecutionException
>>>> +    {
>>>> +        overLayDir(serverDir, confDir, "conf");
>>>> +    }
>>>> +
>>>> +    private void overlayDeployDir(File serverDir) throws
>>>> MojoExecutionException
>>>> +    {
>>>> +        overLayDir(serverDir, deployDir, "deploy");
>>>> +    }
>>>> +
>>>> +    private void overlayLibDir(File serverDir) throws
>>>> MojoExecutionException
>>>> +    {
>>>> +        overLayDir(serverDir, libDir, "lib");
>>>> +    }
>>>> +
>>>> +    private void overLayDir(File serverDir, File overLayDir, String
>>>> dirName) throws MojoExecutionException
>>>> +    {
>>>> +        File baseDir = new File(serverDir + File.separator + dirName);
>>>> +        if(overLayDir.exists())
>>>> +        {
>>>> +            try
>>>> +            {
>>>> +                FileUtils.copyDirectoryStructure(overLayDir, baseDir);
>>>> +            }
>>>> +            catch(IOException e)
>>>> +            {
>>>> +                throw new MojoExecutionException("Could not overlay
>>>> " + dirName + "Dir", e);
>>>> +            }
>>>> +        }
>>>> +    }
>>>> +
>>>> +    private void buildBinDir(File serverDir) throws
>>>> MojoExecutionException
>>>> +    {
>>>> +        File binDir = new File(outputDirectory.getAbsolutePath() +
>>>> File.separator + "bin");
>>>> +
>>>> +        if(!binDir.exists())
>>>> +        {
>>>> +            binDir.mkdirs();
>>>> +        }
>>>> +
>>>> +        VelocityEngine engine = new VelocityEngine();
>>>> +        Properties p = new Properties();
>>>> +        p.setProperty("resource.loader", "class");
>>>> +        p.setProperty("class.resource.loader.class",
>>>> ClasspathResourceLoader.class.getName() );
>>>> +        try {
>>>> +            engine.init(p);
>>>> +        } catch (Exception e) {
>>>> +            throw new MojoExecutionException("Problem creating
>>>> initting velcoity engine", e);
>>>> +        }
>>>> +
>>>> +        VelocityContext context = new VelocityContext();
>>>> +        context.put("jbossServerHome", serverDir.getAbsolutePath());
>>>> +        context.put("jbossHome", jbossHomeDir.getAbsolutePath());
>>>> +        context.put("serverName", serverName);
>>>> +
>>>> +        String osName = System.getProperty("os.name");
>>>> +
>>>> +        if (osName.startsWith("Windows"))
>>>> +        {
>>>> +            buildWindowsScripts(binDir, engine, context);
>>>> +        }
>>>> +        else
>>>> +        {
>>>> +            buildUnixScipts(binDir, engine, context);
>>>> +        }
>>>> +    }
>>>> +
>>>> +    private void buildUnixScipts(File binDir, VelocityEngine
>>>> engine, VelocityContext context) throws MojoExecutionException
>>>> +    {
>>>> +        File runScript = new File(binDir + File.separator + "run.sh");
>>>> +        File shutdownScript = new File(binDir + File.separator +
>>>> "shutdown.sh");
>>>> +
>>>> +        try
>>>> +        {
>>>> +            Runtime runtime = Runtime.getRuntime();
>>>> +
>>>> +            Template runTemplate = engine.getTemplate("run.sh.vm");
>>>> +            FileWriter fileWriter = new FileWriter(runScript);
>>>> +            runTemplate.merge(context, fileWriter);
>>>> +            fileWriter.flush();
>>>> +
>>>> +            String command = "chmod 755 " +
>>>> runScript.getAbsolutePath();
>>>> +            Process process = runtime.exec(command);
>>>> +
>>>> +            Template shutdownTemplate =
>>>> engine.getTemplate("shutdown.sh.vm");
>>>> +            fileWriter = new FileWriter(shutdownScript);
>>>> +            shutdownTemplate.merge(context, fileWriter);
>>>> +            fileWriter.flush();
>>>> +
>>>> +            command = "chmod 755 " + shutdownScript.getAbsolutePath();
>>>> +            process = runtime.exec(command);
>>>> +        }
>>>> +        catch(Exception e)
>>>> +        {
>>>> +            throw new MojoExecutionException("Problem generating
>>>> scripts", e);
>>>> +        }
>>>> +    }
>>>> +
>>>> +    private void buildWindowsScripts(File binDir, VelocityEngine
>>>> engine, VelocityContext context) throws MojoExecutionException
>>>> +    {
>>>> +        File runScript = new File(binDir + File.separator + "run.sh");
>>>> +        File shutdownScript = new File(binDir + File.separator +
>>>> "shutdown.sh");
>>>> +
>>>> +        try
>>>> +        {
>>>> +            Template runTemplate = engine.getTemplate("run.bat.vm");
>>>> +            FileWriter fileWriter = new FileWriter(runScript);
>>>> +            runTemplate.merge(context, fileWriter);
>>>> +            fileWriter.flush();
>>>> +
>>>> +            Template shutdownTemplate =
>>>> engine.getTemplate("shutdown.bat.vm");
>>>> +            fileWriter = new FileWriter(shutdownScript);
>>>> +            shutdownTemplate.merge(context, fileWriter);
>>>> +            fileWriter.flush();
>>>> +        }
>>>> +        catch(Exception e)
>>>> +        {
>>>> +            throw new MojoExecutionException("Problem generating
>>>> scripts", e);
>>>> +        }
>>>> +    }
>>>> +}
>>>> +
>>>> Index: src/main/java/org/codehaus/mojo/jboss/AbstractJBossMojo.java
>>>> ===================================================================
>>>> --- src/main/java/org/codehaus/mojo/jboss/AbstractJBossMojo.java   
>>>> (revision 1497)
>>>> +++ src/main/java/org/codehaus/mojo/jboss/AbstractJBossMojo.java   
>>>> (working copy)
>>>> @@ -21,6 +21,7 @@
>>>>
>>>>  import java.net.HttpURLConnection;
>>>>  import java.net.URL;
>>>> +import java.io.File;
>>>>
>>>>  /**
>>>>   * Created by IntelliJ IDEA.
>>>> @@ -40,6 +41,11 @@
>>>>      protected String jbossHome;
>>>>
>>>>      /**
>>>> +     * @parameter expression="${project.build.directory}/jboss
>>>> +     */
>>>> +    protected File outputDirectory;
>>>> +
>>>> +    /**
>>>>       * The server name
>>>>       *
>>>>       * @parameter expression="default"
>>>> @@ -62,10 +68,10 @@
>>>>
>>>>              Process p = null;
>>>>              if (osName.startsWith("Windows")){
>>>> -                String command[] = {"cmd.exe", "/C", "cd " +
>>>> jbossHome + "\\bin & " + fName + ".bat " + " " + params };
>>>> +                String command[] = {"cmd.exe", "/C", "cd " +
>>>> outputDirectory.getAbsolutePath() + "\\bin & " + fName + ".bat " + "
>>>> " + params };
>>>>                  p = runtime.exec(command);
>>>>              } else {
>>>> -                String command[] = {"sh", "-c", "cd " + jbossHome +
>>>> "/bin; ./" + fName + ".sh " + " " + params};
>>>> +                String command[] = {"sh", "-c", "cd " +
>>>> outputDirectory.getAbsolutePath() + "/bin; ./" + fName + ".sh " + "
>>>> " + params};
>>>>                  p = runtime.exec(command);
>>>>              }
>>>>
>>>> Index: pom.xml
>>>> ===================================================================
>>>> --- pom.xml    (revision 1497)
>>>> +++ pom.xml    (working copy)
>>>> @@ -23,10 +23,25 @@
>>>>          <version>2.0</version>
>>>>        </dependency>
>>>>        <dependency>
>>>> +        <groupId>org.apache.maven</groupId>
>>>> +        <artifactId>maven-plugin-api</artifactId>
>>>> +        <version>2.0</version>
>>>> +      </dependency>
>>>> +      <dependency>
>>>>          <groupId>commons-codec</groupId>
>>>>          <artifactId>commons-codec</artifactId>
>>>>          <version>1.3</version>
>>>>        </dependency>
>>>> +      <dependency>
>>>> +        <groupId>velocity</groupId>
>>>> +        <artifactId>velocity</artifactId>
>>>> +        <version>1.4</version>
>>>> +      </dependency>
>>>> +      <dependency>
>>>> +        <groupId>org.codehaus.plexus</groupId>
>>>> +        <artifactId>plexus-utils</artifactId>
>>>> +        <version>1.1</version>
>>>> +      </dependency>
>>>>      </dependencies>
>>>>      <!--
>>>>      <dependencies>
>>>>
>>>>
>>>> ------------------------------------------------------------------------
>>>>
>>>>
>>>>>
>>>>> On Feb 17, 2006, at 9:37 AM, Manfred Geiler wrote:
>>>>>
>>>>>> yes, definitive!
>>>>>>
>>>>>> Thanks,
>>>>>> Manfred
>>>>>>
>>>>>>
>>>>>> On 2/17/06, Jeff Smith <[EMAIL PROTECTED]
>>>>>> <mailto:[EMAIL PROTECTED]>> wrote:
>>>>>>> All,
>>>>>>>
>>>>>>> I have modified the source for the maven 2 jboss plugin to work more
>>>>>>> like the maven 1.x plugin. I added a configure mojo that copies the
>>>>>>> contents of the specified server in your jboss home into the target
>>>>>>> directory. It can also overlay your own conf, lib an deploy stuff.
>>>>>>> Basically  just like the maven 1.x plugin. Is there any interest in
>>>>>>> this? If so I can submit a patch.
>>>>>>>
>>>>>>> -jeff
>>>>>>>
>>>>>
>>>>
>>

Reply via email to