[ http://jira.codehaus.org/browse/MANTRUN-49?page=comments#action_74376 ]
Brian Yoffe commented on MANTRUN-49:
------------------------------------
I can explain, I think, why you are getting the error, but I cannot provide a
solution.
Basically, if you look at the ModuleFinder class inside of xdoclet, you'll find
the following code:
91 public static void initClasspath(Class clazz)
92 {
93 if (System.getProperty("xdoclet.class.path") == null) {
94 try {
95 classpath = ((AntClassLoader)
clazz.getClassLoader()).getClasspath();
96 }
97 catch (ClassCastException e) {
98 classpath = System.getProperty("java.class.path");
99 }
100 }
101 else {
102 classpath = System.getProperty("xdoclet.class.path");
103 }
104 }
This initialized classpath with a list of jars, which are then cracked open in
ModuleFinder.findModules.
Here, META-INF/xdoclet.xml is opened, if found, and modules, such as ejbdoclet
are added to xdoclet. Basically, "java.class.path"
contains only the classworlds-1.1.jar, so no modules get added.
An option might be to set the xdoclet.class.path system property prior to
executing this to the plugin classpath, but I dont know how to:
1) Set a system property from a maven pom
2) Set a system property using ant
Further, I'm not confident that it's a good idea to set system properties in
this fashion.
The right approach, I think, would be to use the xdoclet maven plugin, however,
you cannot use the xdoclet plugin with the antrun plugin, which is very
problematic.
This can be found at http://jira.codehaus.org/browse/MANTRUN-37
> <taskdef/> seems ignoring classpath
> -----------------------------------
>
> Key: MANTRUN-49
> URL: http://jira.codehaus.org/browse/MANTRUN-49
> Project: Maven 2.x Antrun Plugin
> Issue Type: Bug
> Affects Versions: 1.2
> Environment: Fedora
> Reporter: Jacek Gerbszt
> Attachments: testcase.tar.gz
>
>
> I'm trying to run xdoclet in ant build file called from antrun plugin. The
> build file is very simple:
> {code:xml}
> <project name="testcase" default="run">
> <property name="maven.repository" value="set repository location
> here!"/>
> <property name="destdir" value="target/generated-sources"/>
>
> <path id="xdoclet.classpath">
> <fileset dir="${maven.repository}">
> <include
> name="commons-collections/commons-collections/3.1/commons-collections-3.1.jar"/>
> <include
> name="commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar"/>
> <include
> name="jboss/jboss-j2ee/4.0.2/jboss-j2ee-4.0.2.jar"/>
> <include name="xjavadoc/xjavadoc/1.1/xjavadoc-1.1.jar"/>
> <include
> name="xdoclet/xdoclet/1.2.3/xdoclet-1.2.3.jar"/>
> <include
> name="xdoclet/xdoclet-ejb-module/1.2.3/xdoclet-ejb-module-1.2.3.jar"/>
> </fileset>
> </path>
>
> <target name="run">
> <!-- print classplath -->
> <property refid="xdoclet.classpath" name="cp"/>
> <echo message="xdoclet.classpath: ${cp}"/>
>
> <!-- define ejbdoclet task -->
> <taskdef classname="xdoclet.modules.ejb.EjbDocletTask"
> classpathref="xdoclet.classpath" name="ejbdoclet"/>
>
> <!-- run ejbdoclet -->
> <ejbdoclet destdir="${destdir}">
> <fileset includes="**/*Bean.java"
> dir="${basedir}/src/main/java"/>
> <remoteinterface/>
> </ejbdoclet>
> </target>
> </project>
> {code}
> When executed directly from command (ant
> -Dmaven.repository=/home/javor/.m2/repository) it works fine. But fails when
> embedded in antrun:
> {code:xml}
> <plugin>
> <artifactId>maven-antrun-plugin</artifactId>
> <version>1.2-SNAPSHOT</version>
> <executions>
> <execution>
> <phase>generate-sources</phase>
> <goals>
> <goal>run</goal>
> </goals>
> <configuration>
> <tasks>
> <ant inheritRefs="true" inheritall="true"
> antfile="build.xml">
> <property name="maven.repository"
> value="${settings.localRepository}"/>
> </ant>
> </tasks>
> </configuration>
> </execution>
> </executions>
> </plugin>
> {code}
> Maven output:
> {noformat}
> ...
> [INFO] [antrun:run {execution: default}]
> [INFO] Executing tasks
>
> run:
> [INFO]
> ------------------------------------------------------------------------
> [ERROR] BUILD ERROR
> [INFO]
> ------------------------------------------------------------------------
> [INFO] Error executing ant tasks
>
> Embedded error: The following error occurred while executing this line:
> /home/javor/workspace/testcase/build.xml:26: Can't create a remoteinterface
> element under ejbdoclet. Make sure the jar file containing the corresponding
> subtask class is on the classpath specified in the <taskdef> that defined {2}.
> ...
> {noformat}
> Could you show me any workaround or put a bit of light on that problem?
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira