Hi Lukas,
Thanks very much for this information. I did run with -X and saw the
classpath but expected that the plugin jar would be on the classpath
within a goal defined by that plugin.
I'll extract my stuff into a separate jar.
Chris.
2008/5/16 Lukas Theussl [EMAIL PROTECTED]:
IIRC artifacts of type plugin are not added to the runtime classpath (if you
run with -X you should see a corresponding message). You have to
deploy/install the plugin as a jar and declare a dependency of a jar type.
HTH,
-Lukas
christo wrote:
Hi All,
I've read the docs, googled, read mailing list archives, asked in irc
etc. but have been unable to find the answer to this.
I'm writing a maven 1 plugin which adds a goal that calls ant:java
running the main method of a class which is bundled in the plugin jar.
There are jar deps in the plugin but my question is not about ensuring
that the plugin's dependencies are on the runtime classpath of the
jvm. I understand how to do this using the
${plugin.getDependencyPath()} call.
The purpose of the plugin is to create a file for the distribution -
essentially metadata for the app. Originally I tried to implement the
whole thing in Jelly but after a few hours I gave up and wrote it in a
dozen lines of Java.
The plugin runs the goal in my project but when the jvm tries to load
my class it can't find it. Why is the plugin jar not on the classpath
of the project when the goal is sought? I have tried sprinkling magic
fork=true spawn=true and this doesn't work.
I've been assuming I need to put a classpath reference into the
ant:java tag. But I can't do this because my plugin jar is not a
dep of itself. Below you can see I've descended into cargo culting a
bit in frustration and pasted ant path elements willy nilly.
The only other plugins I can find that bundle classes are build
reports which register themselves explicitly. Do I have to register
for a non report plugin?
My plugin id: maven-hash-registry-plugin
Main class for plugin: com.atlassian.hashregistry.GenerateHashRegistry
Goal name: hashregistry:generate
project xmlns:ant=jelly:ant
goal name=hashregistry:generate prereqs=java:compile
description=Generate the hash registry
ant:java classname=com.atlassian.hashregistry.GenerateHashRegistry
ant:classpath
ant:pathelement location=${maven.build.dest} /
ant:path refid=maven.dependency.classpath /
ant:path refid=maven.compile.src.set /
ant:pathelement
location=${plugin.getDependencyPath('commons-jelly:commons-jelly')}/
ant:pathelement
location=${plugin.getDependencyPath('commons-codec:commons-codec')}/
ant:pathelement
location=${plugin.getDependencyPath('commons-io:commons-io')}/
ant:pathelement
location=${plugin.getDependencyPath('maven-hash-registry-plugin:maven-hash-registry-plugin')}/
ant:pathelement
location=${plugin.getDependencyPath('maven-hash-registry-plugin')}/
!-- just in case this is correct --
/ant:classpath
/ant:java
/goal
/project
Any pointers or wisdom would help. I'm just about to check out the
source to Maven!
thanks in advance,
Chris.
-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
--
Chris Mountford
In theory, there is no difference between theory and practice. But,
in practice, there is. -- Jan L. A. van de Snepscheut
-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]