Re: Maven debugging HOWTO

2005-12-24 Thread Anonimac Anonimac
Jochen,
thank you for this. I tried with embedder(didn't work), so this will really
help me.


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]




Re: Maven debugging HOWTO

2005-12-24 Thread Carlos Sanchez
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

Maven debugging HOWTO

2005-12-23 Thread Jochen Wiedmann
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]