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