[ http://jira.codehaus.org/browse/MNG-2509?page=comments#action_75258 ] 
            
Antoine Levy-Lambert commented on MNG-2509:
-------------------------------------------

Hello Davy,

can you start ant with -verbose or -debug to get a stack trace.

If the stack trace leads you to believe that it is an ant bug (could be) then 
you can cross post this issue in bugzilla.

Mention it here so that the Maven developers know that this is followed up on 
the Ant side.

Regards,

Antoine

> 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

        

Reply via email to