[ http://jira.codehaus.org/browse/MNG-2509?page=all ]
Davy Toch updated MNG-2509: --------------------------- Attachment: build.xml > M2/ANT : Weird ClassCastException in <m:pom> in macrodef when calling > Beanshell scripting. > ------------------------------------------------------------------------------------------ > > Key: MNG-2509 > URL: http://jira.codehaus.org/browse/MNG-2509 > Project: Maven 2 > Issue Type: Bug > Components: Ant tasks > Affects Versions: 2.0.4 > 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="[EMAIL PROTECTED]"> > <filterchain> > <tokenfilter> > <replacestring from="_TOKEN_ARTIFACTID_" > to="@{artifactId}"/> > <replacestring from="_TOKEN_PACKAGING_" > to="@{packaging}"/> > </tokenfilter> > </filterchain> > </copy> > <m:pom id="@{pomRefId}" file="[EMAIL PROTECTED]"/> > </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