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 >>>>>>> >>>>> >>>> >>
