Skip to main content

JAR Dependency and Ant Jar Task [Merging Archives]

Ever had a situation where you are using Ant to build a JAR file and this JAR uses classes from other JAR OR needs few other JAR files to be in class path. Placing dependent JARs in class path manually is one way of doing it, but what if you want to generate/deliver/use only one JAR [may be executable] which includes all the dependent JARs in it. ‘zipfileset’ attribute of the ‘jar’ ANT task is the one to use.
Say, you are trying to generate a JAR file with name ‘my-application.jar’, which needs/depends on another JAR with the name ‘some-dependency.jar’. Assuming all the compiled classes are available under ‘_bin’ directory, the dependent JAR is available under ‘lib’ directory and you want to place the generated JAR under ‘_dist’ directory, ANT script might look as given below
<jar destfile="_dist/my-application.jar">
    <fileset dir="_bin" />
    <zipfileset src="lib/some-dependency.jar" includes="**/*.class" excludes="META-INF/**/*" />
</jar>
That is all you need, only extra line you’ve is ‘zipfileset’ attribute. This attribute takes the JAR file [some-dependency.jar] to be added to the target JAR. You can mention what files from this JAR need to included OR excluded using the ‘includes’ and ‘excludes’ attributes. The above code says to include all ‘.class’ files and exclude all files under ‘META-INF’ directory.
What if you have more than one JAR to include, say all the JAR files under ‘lib’ directory, one way is to add multiple ‘zipfileset’ tag for each of those JAR files, if you’ve a big list of JARs under your ‘lib’ directory then, you can use the ANT script given below
<unjar dest="_unjar" overwrite="false">
    <fileset dir="lib" includes="**/*.jar"/>
</unjar>
<jar destfile="_dist/my-application.jar">     <fileset dir="_bin" />     <fileset dir="_unjar" includes="**/*.class"/> </jar>
What we did here is, we un-jared all the JAR files under ‘lib’ directory to a temporary directory ‘_unjar’, and include all the ‘.class’ files using the ‘fileset’ tag, simple isn’t it!

Comments

Popular posts from this blog

Simple Accordion using Java Script and CSS

Well you can find many online, but it's difficult to find one with out any dependent API. Most of the available accordions use other APIs for animation and other stuff. For those who just want accordion with out any other stuff, this one is the perfect one. It's very simple and you don't have to be a geek to understand it. Basic knowledge of Java script and CSS will do to understand how this works. In this article I'll take you through the steps of developing an accordion. Couple of minutes you are ready to write your own. Well then let's start developing one. Layout of the HTML block looks something like the one below Lets look at the CSS first which is very simple. /** container styles **/ .ra-p, .ra-cp { padding: 0 0 0.1em; } /**** heading styles ****/ .ra-p h2, .ra-cp h2 { margin: 0px; padding: 0.2em; cursor: pointer; color: #fff; background-color: #3d80b0; } /**** collapsed heading styles ****/ .ra-cp h

Hosting Multiple Domains In Tomcat

Tomcat allows us to host multiple domains in one instance, using multiple ' Host ' tags. In this article I will explain how to do it on Tomcat. This is very simple configuration using ' Host ' tags in your server.xml . A novice can also understand this configuration very easily. Before going into the details of the configuration first lets have a look at the ' Host ' tag, ' Context ' tag and ' Alias ' tags first. <Host name="domain1" appBase="[application base]" autoDeploy="[true/false]" unpackWARs="[true/false]"> <Alias>...</Alias> <Context path="" docBase="" reloadable="[true/false]"/> </Host> First lets have a look at ' Alias ' tag. This tag is used to provide aliases for your actual domain. For example you have a domain called 'domain1.com', and you want to run the same application for 'www.do

File Uploading Using Servlets, JSP and Commons File Upload API

I’ve seen many developers who are at the early stages of their career have problems with this topic and seen many posts in forums asking how to do it – File Uploading using Servlets, JSP!; this article will provide an example using Commons File Upload API. I tried to make the example as simple as possible, hope it helps those early birds. Example uses JSP to provide the pages with form where user can select the file to upload with other form fields, Commons File Upload API to process submitted form and read form fields separately, and Servlets as middle layer between JSP and Commons File Upload API, example also has ANT build script to generate the distributables. All the code can be downloaded, links to these resources are provided at the end of this post, lets get on with the example then. The flow in this example is as depicted in the following picture. As you can see, user selects the file to upload and provides normal form data as well, using "index.jsp" and submi