If one needs to distribute only one jar without dist/lib jars, the following ant script segment should be inserted after the line <import file = "nbproject/build-impl.xml" /> in the project build.xml:

    <!--
      This is original "Fat JARs out of NetBeans" for NetBeans 6.8 link:
https://busyprogrammer.wordpress.com/2010/01/26/fat-jars-out-of-netbeans/
      For newer Netbeans it is necessary to change:
      <target depends="init,compile,-pre-pre-jar,-pre-jar,-unjar-and-copy-lib-jars" name="fat-jar">
      into
      <target depends="-do-jar,-unjar-and-copy-lib-jars" name="fat-jar">
    -->
    <target name="-unjar-and-copy-lib-jars">
      <!--
        If the ant reports you a 'Cannot fix dependencies for:' message,
        the following 2 lines allow you to overcome the jar problem that is in the message:
        <copy file="problematic.jar" todir="dist/lib" overwrite="true"/>
        <echo level="info">Copied problematic.jar to dist/lib</echo>
      -->
      <unjar dest="${build.classes.dir}">
        <fileset dir="dist/lib">
          <include name="**/*.jar"/>
        </fileset>
        <patternset>
          <exclude name="META-INF/**"/>
          <exclude name="/*"/>
        </patternset>
      </unjar>
    </target>
    <target depends="-do-jar,-unjar-and-copy-lib-jars" name="fat-jar">
      <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
      <jar destfile="${dist.jar}">
        <fileset dir="${build.classes.dir}"/>
        <manifest>
          <attribute name="Main-Class" value="${main.class}"/>
        </manifest>
      </jar>
      <echo>To run this application from the command line without Ant, try:</echo>
      <property location="${dist.jar}" name="dist.jar.resolved"/>
      <echo>java -jar "${dist.jar.resolved}"</echo>
    </target>
    <target depends="clean,fat-jar" name="clean-and-fat-jar"/>


The inserted targets are called as follows:
Files-> build.xml-> Run Target-> Other Targets-> clean-and-fat-jar
or
Files-> build.xml-> Run Target-> Other Targets-> fat-jar

The result of these targets is dist/${dist.jar} and as mentioned above, only that jar is distributed.

Vladimir Kokovic, DP senior (69)
Serbia, Belgrade, March 26, 2020

Reply via email to