I have a Java Application in NetBeans 7.1 (let's call it myApp) that depends on a Java Class-Library Project [more than one, actually] where I keep some utility-classes I share among projects.
This Class-Library Project (let's call it myLib) depends on [many] third party libraries (e.g. apache-commons-younameit.jar).
I included myLib as a library, and NetBeans' Ant script pulls myLib.jar in the dist/lib
directory of my myApp project; however, the jars upon which myLib depends are not pulled in together with myLib, so my project gets runtime exceptions due to the missing apache-commons-youtnameit.jar.
I would like to have both myLib.jar and apache-commons-younameit.jar automatically pulled into myApp's dist/lib
folder, so that I don't have to manually check all of my libraries' dependencies and add them to my main project.
What I'd like to avoid is the following:
Thank you in advance for any help, or for pointing me in the right direction.
I found a way to copy "dependant libraries' dependant libraries" as you said in one of the comments. Hopefully this helps.
Add the following code to your NetBean project's build.xml file, after the <import file="nbproject/build-impl.xml"/>
line. You will need to fill out a proper relative path in the <fileset>
tags below.
<!--Copy over any "dependant libraries' dependant libraries" -->
<target name="-post-jar">
<echo>Copying over extra jars into PROJECTNAME</echo>
<copy todir="./dist/lib">
<!-- put in order from least important to most important to prevent file overwrites -->
<fileset dir="path-to-other-nb-project/dist/lib"></fileset>
<fileset dir="path-to-second-nb-project/dist/lib"></fileset>
</copy>
</target>
Not the cleanest code, but it solved the problem for me. You'll need to manually update this as you add extra dependant projects to your main project.
This is what worked for me in Netbeans 7.3:
Right-click on your project and select Properties, then select Libraries on the right side.
Then under "Libraries Folder" click the "Browse..." button:
Then choose your lib folder, unless it is already chosen automatically by Netbeans:
Then click Next, Finish as needed and when you come back to the Properties dialog, you should have:
After that, Netbeans should both copy the lib folder into dest and, most importantly, will reference all your libraries in the MANIFEST.MF file in your main JAR.
As a test, look if there is a new CopyLibs folder in the lib folder. Inside CopyLibs there should be a org-netbeans-modules-java-j2seproject-copylibstask.jar file. Netbeans added these and this is, I presume, what drives the copying of the lib folder into dist.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With