You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Jason van Zyl (JIRA)" <ji...@codehaus.org> on 2007/05/26 18:02:59 UTC
[jira] Closed: (MANTTASKS-19) M2/ANT : Weird ClassCastException in
in macrodef when calling Beanshell scripting.
[ http://jira.codehaus.org/browse/MANTTASKS-19?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jason van Zyl closed MANTTASKS-19.
----------------------------------
Resolution: Fixed
Reported as being fixed.
> M2/ANT : Weird ClassCastException in <m:pom> in macrodef when calling Beanshell scripting.
> ------------------------------------------------------------------------------------------
>
> Key: MANTTASKS-19
> URL: http://jira.codehaus.org/browse/MANTTASKS-19
> Project: Maven 2.x Ant Tasks
> Issue Type: Bug
> Environment: - ANT 1.6.5 (with bsh-2.0b4.jar in ANT_HOME/lib)
> - JDK 1.5
> Reporter: Davy Toch
> Attachments: build.xml, pom.xml
>
>
> Hi,
> In ANT, sometimes more than one artifact is generated from the same
> build file (e.g. myapp.jar, myapp-client.jar, myapp-with-deps.jar).
> If using the M2 plugin for ANT (currently 2.0.4), this would mean
> we would need three POM's for the above 3 artifacts. However, in the
> above case the 3 POM's would be almost identical.
> So I have taken the following approach in order to have only one generic
> POM:
> pom.xml (with ANT tokens _TOKEN_...):
> <project xmlns="http://maven.apache.org/POM/4.0.0"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
> <modelVersion>4.0.0</modelVersion>
> <groupId>be.steria.test</groupId>
> <artifactId>_TOKEN_ARTIFACTID_</artifactId>
> <packaging>_TOKEN_PACKAGING_</packaging>
> <version>1.5-SNAPSHOT</version>
> <description>Test artifact</description>
> <dependencies>
> <dependency>
> <groupId>log4j</groupId>
> <artifactId>log4j</artifactId>
> <version>1.2.9</version>
> <scope>compile</scope>
> </dependency>
> <dependency>
> <groupId>junit</groupId>
> <artifactId>junit</artifactId>
> <version>3.8.1</version>
> <scope>test</scope>
> </dependency>
> </dependencies>
> <distributionManagement>
> <repository>
> <id>repo_dev</id>
> <url>scp://localhost/m2demo/repo_dev</url>
> </repository>
> </distributionManagement>
> </project>
> build.xml:
> <project name="example-ant-using-m2-plugin" default="m2init"
> xmlns:m="antlib:org.apache.maven.artifact.ant">
> <macrodef name="create-pom">
> <attribute name="pomRefId"/>
> <attribute name="artifactId"/>
> <attribute name="packaging" default="jar"/>
> <sequential>
> <!-- IMPORTANT : derived POM files must be generated in the same
> folder as pom.xml, otherwise the paths, ... will be incorrect -->
> <copy file="pom.xml" filtering="true"
> toFile="pom-@{pomRefId}.derived.xml">
> <filterchain>
> <tokenfilter>
> <replacestring from="_TOKEN_ARTIFACTID_"
> to="@{artifactId}"/>
> <replacestring from="_TOKEN_PACKAGING_"
> to="@{packaging}"/>
> </tokenfilter>
> </filterchain>
> </copy>
> <m:pom id="@{pomRefId}" file="pom-@{pomRefId}.derived.xml"/>
> </sequential>
> </macrodef>
> <target name="m2init">
> <m:pom id="M2POM" file="pom.xml"/>
> <!-- causes ClassCastException in macrodef 'create-pom' -->
> <!--script language="beanshell"/-->
> <!-- create POM's on-the-fly (one for each artifact) -->
> <create-pom pomRefId="M2POM_MYAPP" artifactId="myapp"/>
> <create-pom pomRefId="M2POM_MYAPP_CLIENT" artifactId="myapp-client"/>
> <create-pom pomRefId="M2POM_MYAPP_WITH_DEPS" artifactId="myapp-with-deps"/>
>
> </target>
> <target name="package" depends="m2init">
> <!-- ... generate artifacts (pure ANT) ... -->
> </target>
> <target name="install" depends="package">
> <m:install file="myapp.jar"
> pomRefId="M2POM_MYAPP"/>
> <m:install file="myapp-client.jar"
> pomRefId="M2POM_MYAPP_CLIENT"/>
> <m:install file="myapp-with-deps.jar"
> pomRefId="M2POM_MYAPP_WITH_DEPS"/>
> </target>
> <target name="deploy">
> <m:deploy file="myapp.jar"
> pomRefId="M2POM_MYAPP"/>
> <m:deploy file="myapp-client.jar"
> pomRefId="M2POM_MYAPP_CLIENT"/>
> <m:deploy file="myapp-with-deps.jar"
> pomRefId="M2POM_MYAPP_WITH_DEPS"/>
> </target>
> </project>
> Now if I execute the above, everything works fine, but if I add <script
> language="beanshell"/> in the target 'm2init', then the following error
> is generated on the first <create-pom> call:
> "java.lang.ClassCastException: org.apache.maven.artifact.ant.Pom"
> Regards,
> Davy Toch
--
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