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
>
>
>
signature.asc
Description: OpenPGP digital signature
