Passing Maven classpath to a ant mojo not working
-------------------------------------------------

                 Key: MNG-5109
                 URL: http://jira.codehaus.org/browse/MNG-5109
             Project: Maven 2 & 3
          Issue Type: Bug
          Components: Class Loading
         Environment: Apache Maven 3.0.3 (r1075438; 2011-03-01 04:31:09+1100)
Maven home: /usr/share/maven3
Java version: 1.6.0_24, vendor: Sun Microsystems Inc.
Java home: /usr/lib/jvm/java-6-sun-1.6.0.24/jre
Default locale: en_AU, platform encoding: UTF-8
OS name: "linux", version: "2.6.35-28-generic", arch: "amd64", family: "unix"
            Reporter: Quentin Ng
         Attachments: qng-maven3.tar

I use a ant tast called listtopath 
This is part of:
http://snapshots.repository.codehaus.org/org/codehaus/mojo/was-plugin-anttasks/1.0/

This task is to get around the headache of trying to get 
${maven.compile.classpath} to be passed from maven to the ant mojo.
It has worked like a treat in Maven 2 (I've included the maven 2 example)
but trying to run on maven 3 the CP isn't being passed through.

Basically this is what I do:
I have a simple mojo that takes a reference to the maven project.
It then uses the listtopath task to convert it into a refid that can be used.

eg.
The mojo.
the parameter to pass the maven project
<pluginMetadata>
    <mojos>
        <mojo>
            <goal>ejb-stub-compile</goal>
            <call>ejb-stub-compile</call>
            <requiresProject>true</requiresProject>
<!--- rest ommitted --//>
                <parameter>
                    <name>mavenproject</name>
                    <type>org.apache.maven.project.MavenProject</type>
                    <required>true</required>
                    <description>This is the pom for the project. Property is
                        read-only (i.e you can not set it)
                    </description>
                </parameter>

<!--- rest ommitted --//>


Then in my maven-ant build


<project xmlns:artifact="antlib:org.apache.maven.artifact.ant">
    <property environment="env" value=""/>
<!-- make reference to the listtopath -->
    <taskdef name="listtopath" 
classname="org.codehaus.mojo.wasanttasks.ListToPathTask">
        <classpath>
            <pathelement
                    
location="${env.USERPROFILE}/.m2/repository/org/codehaus/mojo/was-plugin-anttasks/1.0/was-plugin-anttasks-1.0.jar"/>
        </classpath>
    </taskdef>

    <target name="ejb-stub-compile" depends="init-windows,init-unix">
        <echo>Starting ejb stub compilation</echo>

        <!-- using the maven project get the classpath -->
        <listtopath targetRef="classpath" mavenproject="mavenproject"/>
        <!-- convert it into a path and store in ref -->
        <pathconvert property="converted.compile.classpath" refid="classpath" 
dirsep="/"/>

        <!-- if the classpath works it should appear here -->
        <echo>classpath:${converted.compile.classpath}</echo>


After compiling this I make a local-repository reference and call it

the call in the pom.

 <plugin>
                <groupId>com.nag.build</groupId>
                <artifactId>ejb-stub-compile</artifactId>
                <version>1.0.15</version>
                <configuration>
                    <mavenproject 
implementation="org.apache.maven.project.MavenProject">${project}</mavenproject>
                    <websphere.home>${websphere.home}</websphere.home>
                    
<input-file>${project.build.directory}/${project.build.finalName}.jar</input-file>
                    
<output-file>${project.build.directory}/${project.build.finalName}-tmp.jar</output-file>
                </configuration>

                <executions>
                    <execution>
                        <phase>pre-integration-test</phase>
                        <goals>
                            <goal>ejb-stub-compile</goal>
                        </goals>
                    </execution>
                </executions>
                <dependencies>
                    <dependency>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>was-plugin-anttasks</artifactId>
                        <version>1.0</version>
                    </dependency>
                </dependencies>
            </plugin>



The above worked with maven2 - migrating to Maven3 has caused the listtopath to 
stop working.
Alternatively there has to be an easier way to pass the cp through to ant!!!!

-- 
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

        

Reply via email to