Good day to you, John,
Thanks :) I'll try to incorporate it this weekend :) ..unless somebody
else wants to do it, in that case, please feel free to do so :)
Thanks,
Franz
On 2/15/07, John J. Franey <[EMAIL PROTECTED]> wrote:
Franz,
Thanks for your contribution. I'm new to developing maven internals and my
first question has been how to debug maven. I want to use the debugger to
learn how maven is working internally.
I've discovered this technique to debug maven 2.0.4 under eclipse 3.2.
Please add it to your tutorial if it is appropriate. Part of your tutorial
is addressing how to debug a user project's unit tests as they are run via
surefire. I'm not certain if the technique I describe here is useful for
debugging a user projects' unit test under surefire, but maybe.
Here is how I can run/debug maven-core. This is can be applied to any maven
subproject that a maven developer may want to edit and run/debug.
Please feel free to incorporate this into your tutorial if it is
appropriate.
First level: running and debugging maven under eclipse: setting up a run
config. The principal here is to merely incorporate the important elements
of the mvn script into an eclipse run configuration. This run configuration
would then be activated as any other run configuration would by clicking run
or debug buttons in the toolbar.
0) checkout the maven subproject (I picked maven-core but any should work)
and
create an eclipse project. I used m2eclipse, but I suppose maven's
eclipse
plugin ought to work as well.
1) In eclipse, create a new Run configuration:
1a) Run->Run...
1b) select Java Application
1c) select New (to create new Java Application run), pick a name for the
config that would include the project name and goal like: "maven myproject
install" which would be meant to run the install goal in myproject.
1d) In the Run dialog:
Main tab)
a) project: maven-core
b) main class: org.codehaus.classworlds.Launcher
Arguments tab)
Program arguments:
< any maven goals or command line argumens (like -X) >
VM arguments:
-Dmaven.home=<your maven installation root>
-Dclassworlds.conf=<your maven installation root>/bin/m2.conf
working directory:
select other: <directory of the project used as maven's input>
Classpath tab)
remove User Entries -> maven-core
add External Jars <your maven installation
root>/core/boot/classworlds-1.1.jar
Source tab)
add project maven-core
Run)
This step will invoke maven without debugging. It will also have the
affect
of registring this new run config as the default run config (and debug run
config)
2) Select a breakpoint int maven-core. I picked:
org.apache.maven.DefaultMaven.execute. Then click the little beetle
(debug
run).
The Next Level: developing maven internals and debugging them:
If you want to make changes to the maven-core or other maven subprojects,
you will need to provide your own version of bin/m2.conf. The purpose is to
tell the internal class loading mechanism (classworlds and
plexus) where your development build directory is so it could load your
version of the classes.
Your custom m2.conf file could be located anywhere in your filesystem, but
since m2.conf is homed in maven-core, which is my example maven subproject,
I edit it in place.
Editing this file doesn't take much understanding of classworlds (I for one
do not understand it to any level).
Copy the original from maven's install bin directory to your preferred
location. Edit the file and add the path to your eclipse build output for
the maven projects involved. I added the middle line in this snippet from
m2.conf:
[plexus.core.maven]
load /home/jfraney/projects/maven-2.0.4/maven-core/bin
load ${maven.home}/lib/*.jar
Then change the maven run configuration that was created above. The
property classworlds.conf must be adjusted to point to your custom m2.conf
file.
Regards,
John
--
View this message in context:
http://www.nabble.com/debugging-maven-with-eclipse-tf2434872s177.html#a8988667
Sent from the Maven Developers mailing list archive at Nabble.com.
---------------------------------------------------------------------
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]