Re: Including Maven Dependencies in Build

Dennis Putnam <[email protected]>
Newsgroups gmane.comp.jakarta.ant.user
Message-ID <[email protected]>
> 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.
Although no one was able to ultimately help me with this problem I did
finally get it to work. It took a lot of digging and trying a lot of
different suggested solutions before I found one that actually worked.
To close out this thread for the archives, here is what I discovered:

It seems that 'ant' is not able to figure out how to handle the maven
remote repositories or maven jar files, at least in any of the solutions
I tried. I finally found that if I downloaded the maven jars manually
and put them in the normal maven library (.m2/repository) I could then
use the zipfileset directives to get them included. Although the library
itself is really arbitrary. Here is my final build xml file, the bolded
text is all I needed to change:

<?xml version="1.0" encoding="UTF-8"?>
<project name="KCBSEvents" default="jar" basedir=".">
    <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="" />
    <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">
        <echo message="Using destination file ${jarfile}" />
        <javac srcdir="src" destdir="bin" includeantruntime="false" />
        <jar destfile="${jarfile}" basedir="bin"
*filesetmanifest="mergewithoutmain"*>
            <manifest>
                <attribute name="Manifest-Version" value="1.0"/>
                <attribute name="Created-By" value="ant 1.9.2 on CentOS
7" />
                <attribute name="Main-Class"
value="KCBSEvents.KCBSEvents" />
            </manifest>
           *<fileset dir="${user.home}/.m2/repository" />**
**            <zipfileset excludes="META-INF/*.SF"
src="${user.home}/.m2/repository/commons-io/2.5/commons-io-2.5.jar"/>**
**            <zipfileset excludes="META-INF/*.SF"
src="${user.home}/.m2/repository/httpcomponents-client/httpclient-4.5.6.jar"/>**
**            <zipfileset excludes="META-INF/*.SF"
src="${user.home}/.m2/repository/httpcomponents-client/httpcore-4.4.10.jar"/>**
**            <zipfileset excludes="META-INF/*.SF"
src="${user.home}/.m2/repository/commons-logging/1.2/commons-logging-1.2.jar"/>**
**            <zipfileset excludes="META-INF/*.SF"
src="${user.home}/.m2/repository/commons-codec/1.10/commons-codec-1.10.jar"/>*
        </jar> 
    </target>
</project>
signature.asc (application/pgp-signature, 196 B)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.17 (MingW32)

iEYEARECAAYFAlwOkk4ACgkQ/fiWYqZ2tVSo9wCeIMzrWjDWB4GOf26r4EQGSs0A
aUkAn0md+kXj+KYC1A1ln2xD4Hf7LmGY
=yEy/
-----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.