There's a easiest (I think) way using remote debugging export MAVEN_OPTS="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"
and in eclipse run - debug - new - remote java application port is the 5005 specified before Then you run mvn and hit debug in eclipse If somebody creates a document and open an issue this can be added to the docs Regards On 12/23/05, Jochen Wiedmann <[EMAIL PROTECTED]> wrote: > Hi, > > it took me some time to figure this out, so it seems worth sharing. > > Jochen > > -- > Often it does seem a pity that Noah and his party did not miss the > boat. (Mark Twain) > > > Maven Debugging HOWTO > =================== > > When looking for bugs in Maven itself or plugins, it saves a real lot of time, > if you can run Maven in a debugger. Fortunately, this is a relatively > trivial task, > if you know what to do. > > 1.) Invoking Maven from the command line > ------------------------------------------------------------ > > Basically, your debugger should execute the following command line. > > M2_HOME=/usr/local/maven-2.0.1 > # Or whatever you have as Maven home > # use set M2_HOME=... on Windows > > M2_REPO=/home/jochen/.m2/repository > # Or whatever you have as Maven repository > # use set M2_REPO=... on Windows > > CW=$M2_REPO/classworlds/classworlds/1.1-alpha-2/classworlds- > 1.1-alpha-2.jar > # The version number may depend on the Maven version. > # Check your "mvn" script, if you are in doubt. > # Use set CW=%M2_REPO%/... on Windows > > ARGS=-Dclassworlds.conf=$M2_HOME/bin/m2.conf -Dmaven.home=$M2_HOME > # Use set ARGS=-Dclassworlds.conf=%M2_HOME%/... on Windows > > java -cp $CW $ARGS org.codehaus.classworlds.Launcher <goals> > # Use java -cp %CW% ... on Windows > > > 2.) Using an IDE > ------------------------ > > Basically, it should be easy to translate the above command line into > your IDE's settings. > In what follows, I'll describe the Eclipse IDE as an example. > > However, there's one imortant Gotcha, which you should be aware of: In > the above example, the initial classpath contains the classworlds jar > file - and nothing else! Your IDE will typically suggest a larger > classpath. For example, if you have a "Maven" project, it will suggest > to put this project and its dependencies on the classpath. But that > will most likely fail. > > The reason is, that the projects dependencies will typically contain > multiple instances of the same dependency. For example, with Maven > 2.0.1 you will have plexus-utils 1.0.4 as well as plexus-utils-1.0.5. > This is no problem, if you are using the class loaders that Maven > creates for you. It won't work, if the IDE creates class loaders: For > example, depending on the order of dependencies, only version 1.0.4 > will be used, even if some classes depend on > 1.0.5. > > In other words: Before starting the IDE's debugger, make sure that the > class path contains the boot class loader and the classworlds.jar > file, but nothing else. > > > 3.) Example: The Eclipse IDE > ------------------------------------------- > > - Make sure, that the Maven 2 Eclipse Plugin is installed. See > http://maven.apache.org/eclipse-plugin.html > for installing the plugin. > - Checkout the following projects from SVN. > Maven: http://svn.apache.org/repos/asf/maven/components/tags/maven-2.0.1/ > > If you need plugin parents, checkout other projects as well, for example > > Plugins: http://svn.apache.org/repos/asf/maven/plugins/trunk > > Note, that I did *not* checkout the Maven trunk. That rarely pays. > Typically, > you'll find differences in the plugin versions which are being used. > > Unfortunately, tags like Maven 2.0.1 are valid for the Maven core only. > There > are no such tags for the various plugins. This makes it sometimes rather > difficult to have the right plugin sources. (Hint to the Maven developers!) > > - Use the Maven 2 plugin to enable that these projects are Maven projects. > > - Initially, invoke the "bootstrap" script in the Maven root directory. > > - Select Run/Run... in the menu. A window opens. > - Select "Java Application" and press the "New" button. > - Set the new debugging profiles name, for example "Maven". > - Enter the "Main class": org.codehaus.classworlds.Launcher > Do not attempt to use the "Search" button: It doesn't show main classes in > dependencies. > - Switch to "Arguments". > - In "Program arguments", enter the goals you want to use, plus properties > you want to set. > - In "VM arguments", enter the "-Dclassworlds.conf=... -Dmaven.home=..." > arguments from 1.) > - Select "Working directory/Other", and your projects base directory. (Where > you would typically invoke "mvn" from.) > - Switch to "Classpath" > - Remove all "User Entries". In particular, remove your project, and the > Maven projects, if they should be there. > - Add the classworlds jar file from 1.) to "User Entries". > - Switch to "Source Path". > - You may safely add your own projects, the Maven projects, plugin projects, > and whatever you like, here. > > That's it. Press "Run" and watch Maven running. > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]