I am writing a plugin for generating JAXB 1.6 sources . The plugin is
written in ant.  How do I access the compile classpath in the plugin.

 

My plugin code:

<project>

  <!--<property name="repo.home" value="C:/Documents and
Settings/user/.m2/repository"/>-->

 

 

<taskdef name="xjc" classname="com.sun.tools.xjc.XJCTask">

            <!- NEED TO SET CLASSPATH HERE SO THAT XJC task can be accessed
-->

 

                        

</taskdef>

 

 

  <target name="hello">

            <mkdir
dir="${targetDirectory}/generated-sources/java/jaxb1.6Plugin"/>

            <echo>XSD File Name ${xsdFileName}</echo>

            <echo>Dir to write generated source to
"${targetDirectory}/generated-sources/java/jaxb1.6Plugin</echo>

            <echo>Package name ${packageName}</echo>

            <xjc schema="${xsdFileName}" removeOldOutput="yes"
target="${targetDirectory}/generated-sources/java/jaxb1.6Plugin"
package="${packageName}"/>

  </target>

</project>

 

Plugin Metadata:

<pluginMetadata>

  <mojos>

    <mojo>

      <goal>hello</goal>

      

      <!-- this element refers to the Ant target we'll invoke -->

      <call>hello</call>

      <requiresProject>true</requiresProject>

      

      <description> Compile the XSD using jaxb 1.6 </description>

      <parameters>

        

      

        

            <parameter>

          <name>xsdFileName</name> 

          <property>xsdFileName</property> 

          <required>true</required> 

          <expression>${xsdFileName}</expression>

          <type>java.lang.String</type>

          <description>XSD to be compiled</description>

        </parameter>

 

              <parameter>

          <name>targetDirectory</name> 

          <property>targetDirectory</property> 

          <required>true</required>

                <expression>${project.build.directory}</expression>

          <type>java.lang.String</type>

          <description>Name of the directory to generate sources
</description>

        </parameter>

 

 

              <parameter>

          <name>packageName</name> 

          <property>packageName</property> 

          <required>true</required> 

          <expression>${packageName}</expression>

          <type>java.lang.String</type>

          <description>Package of the generated sources</description>

        </parameter>

 

          <parameter>

          <name>repolocal</name> 

          <property>repolocal</property> 

          <required>true</required> 

          <expression>${localRepository}</expression>

          <type>java.lang.String</type>

          <description>Local repo</description>

        </parameter>

 

 

      </parameters>

    </mojo>

  </mojos>

</pluginMetadata>


Project POM

<project>

  <modelVersion>4.0.0</modelVersion>

    

  <groupId>org.myproject.plugins</groupId>

  <artifactId>hello-plugin</artifactId>

  <version>1.0-SNAPSHOT</version>

  <packaging>maven-plugin</packaging>

  <name>Hello Plugin</name>

  

  <dependencies>

    <dependency>

      <groupId>org.apache.maven</groupId>

      <artifactId>maven-script-ant</artifactId>

      <version>2.0.5</version>

    </dependency>

  </dependencies>

 

 

  <build>

    <plugins>

      <plugin>

        <!-- NOTE: We don't need groupId if the plugin's groupId is

             org.apache.maven.plugins OR org.codehaus.mojo.

             We also don't have to specify a version, since Maven can

             automatically resolve the newest one.

        -->

        <artifactId>maven-plugin-plugin</artifactId>

        

        <!-- Add the Ant plugin tools -->

       

        <dependencies>

 

 

          <dependency>

            <groupId>org.apache.maven</groupId>

            <artifactId>maven-plugin-tools-ant</artifactId>

            <version>2.0.1</version>

          </dependency>

 

 

<!-- JAXB -->

   <dependency>

      <groupId>jwsdp.jaxb</groupId>

      <artifactId>jaxb-api</artifactId>

      <version>1.6</version>

    </dependency>

    <dependency>

      <groupId>jwsdp.jaxb</groupId>

      <artifactId>jaxb-impl</artifactId>

      <version>1.6</version>

    </dependency>

    <dependency>

      <groupId>jwsdp.jaxb</groupId>

      <artifactId>jaxb-libs</artifactId>

      <version>1.6</version>

    </dependency>

    <dependency>

      <groupId>jwsdp.jaxb</groupId>

      <artifactId>relaxngDatatype</artifactId>

      <version>1.6</version>

    </dependency>

    <dependency>

      <groupId>jwsdp.jaxb</groupId>

      <artifactId>xsdlib</artifactId>

      <version>1.6</version>

    </dependency>

    

    

     <dependency>

          <groupId>jwsdp.jaxb</groupId>

          <artifactId>jaxb-xjc</artifactId>

          <version>1.6</version>

    </dependency>

  <dependency>

          <groupId>jwsdp.jaxb</groupId>

          <artifactId>jsr173_api</artifactId>

          <version>1.6</version>

    </dependency>

 

 

 

 

        </dependencies>

        

 

 

 

 

        <!-- Tell the plugin-plugin which prefix we will use.

             Later, we'll configure Maven to allow us to invoke this

             plugin using the "prefix:mojo" shorthand.

        -->

        <configuration>

          <goalPrefix>hello</goalPrefix>

        </configuration>

      </plugin>

    </plugins>

  </build>

            

  

</project>

 

Thanks,

Rahul

 

 

Reply via email to