Re: Including Maven Dependencies in Build

Dennis Putnam <[email protected]>
Newsgroups gmane.comp.jakarta.ant.user
Message-ID <[email protected]>
On 12/7/2018 3:14 PM, Dennis Putnam wrote:
> On 12/7/2018 12:10 AM, Jaikiran Pai wrote:
>> Hello Dennis,
>>
>>
>> On 07/12/18 1:15 AM, Dennis Putnam wrote:
>>>         <artifact:dependencies filesetid="maven-dependencies">
>>>
>> I don't see this fileset being used in the rest of the target(s) which
>> generate your jar file. Maybe you missed using it to copy over the
>> dependency files? Take a look at section "Using FileSets and the Version
>> Mapper" of http://maven.apache.org/ant-tasks/examples/dependencies.html
>> for an example on how you could use it.
>>
>> -Jaikiran
> Hi Jaikiran,
>
> Thanks for the reply. I thought it must have been some thing like that.
> After reading your link and as a maven noob and not much better with
> ant, I see I have to copy those dependencies. But it is not clear where
> they need to be copied to. The example shows "lib" but I don't see how
> javac knows to look there unless it is by default. My build directory is
> a local git repository so the structure is "bin" and "src" in that
> directory. There is no "lib" at the present time. That is also were I
> have the build xml file for ant along with some files for obtaining some
> information during the ant build. The output file for the jar is in a
> directory in "/tmp" which is later copied to its final location.
>

I found another article that suggested adding a classpath. I did notice
that "compile.classpath" in my original xml was not set. I created a new
"build.classpath" and added a "lib" directory to my build directory.
Although I am getting the same results perhaps I am a bit closer, at
least it makes logical sense to me now. Here is my latest 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>
                <copy todir="lib">
                        <fileset refid="maven-dependencies" />
                        <mapper type="flatten" />
                </copy>
        </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>
        <path id="build.classpath">
                <pathelement location="lib" />
                <pathelement location="bin" />
        </path>
        <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="build.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>

Somehow I am still not able to get ant to pull in the maven dependencies.
signature.asc (application/pgp-signature, 196 B)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.17 (MingW32)

iEYEARECAAYFAlwNMNUACgkQ/fiWYqZ2tVTmCACdGF4U20NadAfKPW0zPQkFmsdr
WJkAnRxH1lHbDMMCly5n46BitE0g7gXT
=FWyV
-----END PGP SIGNATURE-----
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.