Including Maven Dependencies in Build

Dennis Putnam <[email protected]>
Newsgroups gmane.comp.jakarta.ant.user
Message-ID <[email protected]>
I have a working ant build script but I changed my application to use 
some maven dependencies. I am trying to include those dependencies into 
that build script. I found this article for doing that:

https://stackoverflow.com/questions/7335819/ant-eclipse-complains-about-artifactdependencies

I know this article is old but I cannot find anything more recent that 
is the equivalent. If anyone has anything I would certainly be 
interested. Anyway as result I came up with this build.xml

<?xml version="1.0" encoding="UTF-8"?>
<project name="KCBSEvents" default="jar" basedir="." 
xmlns:artifact="antlib:org.apache.maven.artifact.ant">
     <property name="build.properties" value="build.properties"/>
     <property name="resources" value="resource" />
     <property name="jardir" value="KCBSEvents" />
     <property name="KCBSDir" value="src/KCBSEvents" />
     <property name="member.number" value="000000" />
     <property name="member.name" value="" />
     <path id="maven-ant-tasks.classpath" 
path="lib/maven-ant-tasks-2.1.3.jar" />
     <typedef resource="org/apache/maven/artifact/ant/antlib.xml"
            uri="antlib:org.apache.maven.artifact.ant"
            classpathref="maven-ant-tasks.classpath" />
     <target name="mvn-init">
         <echo message="Loading maven dependencies" />
         <artifact:dependencies filesetid="maven-dependencies">
             <dependency groupId="org.apache.httpcomponents" 
artifactId="httpclient" version="4.5.6" />
             <dependency groupId="commons-io" artifactId="commons-io" 
version="2.5" />
         </artifact:dependencies>
     </target>
     <target name="checkOS">
         <condition property="isWindows">
             <os family="windows" />
         </condition>
         <condition property="isLinux">
             <os family="unix" />
         </condition>
     </target>
     <target name="if_windows" depends="checkOS" if="isWindows">
         <property name="jarfile" value="C:\temp\KCBSEvents.jar" />
         <property name="antcontrib" value="H:\html\Applets\ant-contrib" />
     </target>
     <target name="if_linux" depends="checkOS" if="isLinux">
         <property name="jarfile" 
value="/tmp/${member.number}/KCBSEvents.jar" />
         <property name="antcontrib" 
value="/var/www/html/Applets/ant-contrib/ant-contrib-1.0b3.jar" />
     </target>
     <target name="setclass" depends="if_linux,if_windows">
         <taskdef resource="net/sf/antcontrib/antcontrib.properties">
             <classpath>
                 <pathelement location="${antcontrib}" />
             </classpath>
         </taskdef>
     </target>
     <target name="incserial" depends="setclass">
         <copy todir="bin/${jardir}/${resources}">
             <fileset dir="${KCBSDir}/${resources}">
                 <include name="${build.properties}" />
             </fileset>
             <filterchain>
                 <expandproperties />
             </filterchain>
         </copy>
         <if> <isset Property="build.number" /> <then>
             <echo message="update build requested" />
         </then> <else>
             <echo message="new build requested" />
             <buildnumber />
         </else> </if>
         <propertyfile 
file="bin/${jardir}/${resources}/${build.properties}">
             <entry key="serialnumber" value="${build.number}" />
             <entry key="membernumber" value="${member.number}" />
             <entry key="name" value="${member.name}" />
         </propertyfile>
         <echo message="serial number: ${build.number}" />
     </target>
     <target name="jar" description="Compile serialized jar" 
depends="incserial,if_windows,if_linux,mvn-init">
         <echo message="Using destination file ${jarfile}" />
         <javac srcdir="src" destdir="bin" 
classpathref="compile.classpath" includeantruntime="false" />
         <jar destfile="${jarfile}" basedir="bin">
             <manifest>
                 <attribute name="Manifest-Version" value="1.0"/>
                 <attribute name="Created-By" value="1.6.0 (Sun 
Microsystems Inc.)" />
                 <attribute name="Main-Class" 
value="KCBSEvents.KCBSEvents" />
             </manifest>
         </jar>
     </target>
</project>

When I run ant I get a successful build. However, when I try to run the 
resulting jar file I get a traceback. The trackback seems to imply that 
the maven dependencies were not pulled into the jar. Am I missing 
something in the build that ties the dependencies to the jar? Can 
someone help me debug this? TIA.

FWIW here is the resulting output from the build:

Buildfile: /usr/build/makejar.xml

checkOS:

if_linux:

if_windows:

setclass:

incserial:
      [echo] update build requested
[propertyfile] Updating property file: 
/usr/build/bin/KCBSEvents/resource/build.
properties
      [echo] serial number: 1001

mvn-init:
      [echo] Loading maven dependencies

jar:
      [echo] Using destination file /tmp/60286/KCBSEvents.jar
       [jar] Building jar: /tmp/60286/KCBSEvents.jar

BUILD SUCCESSFUL
Total time: 3 seconds
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.