I found an article on adding Maven dependencies to my ant script. While
I'm getting a successful build but the same exception when I run the
jar, I hope this is getting me closer. At least the pom.xml is in the
build. I am wondering if the added *fileset* is right and working. Here
is my latest:

    <?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="" />
            <property name="jarpath" value="/${user.home}/.m2/repository" />
           *<path id="maven-ant-tasks.classpath"
    path="/lib/jvm-exports/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" />**
    **        <artifact:pom id="pomfile" file="pom.xml" />**
    **        <artifact:dependencies filesetId="mvn-dependencies"
    pomRefId="pomfile" />*
            <path id="compile-jars">
                    <multirootfileset
    
basedirs="${jarpath}/commons-io/2.5,${jarpath}/httpcomponents-client,${jarpath}/commons-logging/1.2,${jarpath}/commons-codec/1.10,/lib/java-ext/json-simple-1.1.1">
                            <include name="commons-io-2.5.jar" />
                            <include name="httpclient-4.5.6.jar" />
                            <include name="httpcore-4.4.10.jar" />
                            <include name="commons-logging-1.2.jar" />
                            <include name="commons-codec-1.10.jar" />
                            <include name="json-simple-1.1.1.jar" />
                    </multirootfileset>
                    *<fileset refid="mvn-dependencies" />*
            </path>
            <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" classpathref="compile-jars" />
                    <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>
                    </jar>
            </target>
    </project>


On 2/20/2019 3:22 PM, Jan Matèrne (jhm) wrote:
> If you have created your JAR the first step is done.
>
> Starting the JAR could be done in several ways. Common is that you have to 
> have all external classes on the runtime classpath:
>
>  
>
> 1. Hard coded start script.
>
> Write a bash/bat-Script with the java command with all cp settings, e.g. (bat)
>
> @echo off
>
> java -cp /build/myjar.jar;lib/one.jar;lib/two.jar;lib/three.jar org.acme.Main 
> %*
>
>  
>
> 2. Wrapper script which collects all JARs in a dynamic way (see 
> ant.bat|ant.sh)
>
>  
>
> 3. Use Ant + <java><classpath> for starting
>
>  
>
> 4. Create a runnable JAR which references the external JARs (manifest: 
> main-class + classpath)
>
>  
>
> 5. Create a shaded jar (uber jar, fat jar): include all classes from external 
> jars into your jar
>
>  
>
> 6. Use a launcher which uses a dependency manager for getting the classpath
>
>  
>
>  
>
>  
>
> You don't have to replicate path definitions in your buildfile, you could 
> (and should) use references:
>
> <javac><classpath id="runtime.cp"><fileset dir="lib" includes="**/*.jar"/>…
>
> <java><classpath refid="runtime.cp"/>
>
>  
>
>  
>
> You mave have a look at 
> http://ant.apache.org/manual/tutorial-HelloWorldWithAnt.html
>
>  
>
>  
>
> Jan
>
>  
>

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to