Java/Ant/Jar

Материал из Java эксперт
Перейти к: навигация, поиск

Add attribute to jar file manifest

   <source lang="java">

//https://amateur.dev.java.net/ //GNU General Public License (GPL v. 2.0) <?xml version="1.0" encoding="UTF-8"?> <project name="Amateur" default="compile" basedir=".">


   <property name="JUNIT_HOME" value="/Applications/eclipse/plugins/org.junit_3.8.1"/>
   <property name="QTJava" value="/System/Library/Java/Extensions/QTJava.zip"/>
   <taskdef name="jarbundler"
            classpath="lib/jarbundler-1.8.1.jar"
            classname="net.sourceforge.jarbundler.JarBundler" /> 
   
   <path id="project.classpath">
       <pathelement location="bin"/>
       <pathelement location="${QTJava}"/>
   </path>
   
   <path id="test.classpath">
       <path refid="project.classpath"/>
       <pathelement location="${JUNIT_HOME}/junit.jar"/>
   </path>
   
   <target name="init">
       <tstamp/>
       <property name="Name"    value="Amateur"/>
       <property name="name"    value="amateur"/>
       <property name="version" value="1.0d6"/>
       <property name="year"    value="2006"/>
       <mkdir dir="bin"/>
       <mkdir dir="dist"/>
   </target>
   
   <target name="clean">
       <delete dir="bin"/>
       <delete dir="dist"/>
   </target>
   
   <target name="compile" depends="init">
       <echo message="${ant.project.name}: ${ant.file}"/>
       <javac destdir="bin">
           <src path="src"/>
           <classpath refid="project.classpath"/>
       </javac>
   </target>
   
   <target name="test">
       <junit fork="yes" printsummary="withOutAndErr">
           <formatter type="plain"/>
           <test name="com.elharo.quicktime.tests.AmateurTests"/>
           <classpath refid="test.classpath"/>
       </junit>
   </target>
   
   <target name="run">
       <java fork="yes" classname="com.elharo.quicktime.Main" failonerror="true">
           <classpath refid="project.classpath"/>
       </java>
   </target>
   
   <target name="jar" depends="compile">
      <jar jarfile="dist/${name}-${version}.jar"
            basedir="bin"
            index="no"
            compress="yes"
            includes="com/elharo/quicktime/*"
            excludes="com/elharo/quicktime/tests/* com/elharo/quicktime/pantry/*">
         <manifest>
           <attribute name="Built-By" value="${user.name}"/>
           <attribute name="Specification-Title"    value="Amateur"/>
           <attribute name="Specification-Version"  value="${version}"/>
           <attribute name="Specification-Vendor"   value="Elliotte Rusty Harold"/>
           <attribute name="Implementation-Title"   value="Amateur"/>
           <attribute name="Implementation-Version" value="${version}"/>
           <attribute name="Implementation-Vendor"  value="Elliotte Rusty Harold"/>          
           <attribute name="Main-Class" value="com.elharo.quicktime.Main"/>
           <section name="com/elharo/quicktime/">
             <attribute name="Sealed" value="true"/>
             <attribute name="Specification-Title"   value="Amateur core classes"/>
             <attribute name="Implementation-Title"  value="com.elharo.quicktime"/>
           <attribute name="Implementation-Version" value="${version}"/>
           <attribute name="Implementation-Vendor"  value="Elliotte Rusty Harold"/>          
          </section>
         </manifest>
       </jar>        
   </target>
   
   <target name="app" depends="jar">
     <delete dir="dist/Amateur.app"/>
       <jarbundler dir="dist" jars="dist/${name}-${version}.jar" 
                   name="Amateur" 
                   mainclass="com.elharo.quicktime.Main" 
                   infostring=" ${version}"
                   version=" ${version}"
                   screenmenu="true"
                   signature="QTAM"
                   bundleid="com.elharo.quicktime"
                   icon="Amateur.icns"
       >
         <documenttype name="Amateur Media"
                   mimetypes="image/jpeg image/png image/gif video/mpeg video/quicktime audio/mpeg" 
                   role="Viewer"/>
         <documenttype name="Amateur Media"
                   extensions="jpg mov mpg mp3 gif png pdf" 
                   role="Viewer"/>
       </jarbundler>
   </target>
   
   <target name="image" depends="app">
     <exec executable="hdiutil" os="Mac OS X">
         <arg value="create"/>
         <arg value="-srcfolder"/>
         <arg value="dist/${Name}.app"/>
         <arg value="-ov"/>
         <arg value="dist/${Name}-${version}.dmg"/>
     </exec>
   </target>
   <taskdef classpath="lib/cobertura.jar" resource="tasks.properties" />
   
   <target name="instrument">
     <cobertura-instrument todir="bin/instrumented-classes">
       <fileset dir="bin/classes">
         <include name="**/*.class"/>
       </fileset>
     </cobertura-instrument>
   </target>
   
   <target name="cover-test" depends="instrument">
     <mkdir dir="${testreportdir}" />
     <junit dir="./" failureproperty="test.failure" printSummary="yes" 
            fork="true" haltonerror="true">
       
       <classpath location="lib/cobertura.jar"/>
       <classpath location="bin/instrumented-classes"/>
       <classpath>
         <fileset dir="${libdir}">
           <include name="*.jar" />
         </fileset>
         <pathelement path="${testclassesdir}" />
         <pathelement path="${classesdir}" />
       </classpath>
       <batchtest todir="${testreportdir}">
         <fileset dir="src">
           <include name="**/*Test.java" />
         </fileset>
       </batchtest>
     </junit>
   </target>
   

</project>

 </source>
   
  
 
  



Ant jar file setting the Main-Class

   <source lang="java">

<project name="YourName" default="all">

 <target name="all" depends="init,clean,compile,createJars,copyBuild" >
 </target>
 <target name="init" description="Project">
   <property environment="env" />
   <property name="j2sdkApi" value="${env.JAVA_HOME}/jre/lib/rt.jar" />
     <property name="src" value="./src" />
   <property name="build" value= "./build" />
 </target>
 <target name="clean" description="build" depends="init">
   <delete dir="${build}" />
   <mkdir dir="${build}" />
 </target>
 <target name="compile" description="compile" depends="init">
   <javac srcdir="${src}" destdir="${build}" >
     <classpath path="${j2sdkApi}" />
           <include name="**/application/**"/>
     <include name="**/types/**"/>
   </javac>
 </target>
 <target name="copyBuild" description="desccription here">
   <copy file="${src}/LOGOUNB_CAPA.JPG" todir="${build}/" />
   <copydir src="${src}/config" dest="${build}/config" />
 </target>
 <target name="createJars" description="jars" depends="compile">
   <mkdir dir="${build}/xml/jar"/>
   <jar jarfile="${build}/br/xml/jar/xpfg.jar"
      basedir="${build}/unb/cic/xml" />
     <manifest file="manifest.mf">
       <attribute name="Main-Class" value="${build}/br/unb/cic/xml/XMLMain" />
     </manifest>
 </target>

</project>

 </source>
   
  
 
  



Ant task: jar

   <source lang="java">

<?xml version="1.0"?> <project name="sample" default="test" basedir=".">

   <property name="root.project.name" value="demo2"/>
   <property name="test.class" value="test.TestSample"/>
  
  <property name="jar.module" value="${root.project.name}.jar"/>
   <path id="test.classpath">
       <pathelement location="dist/${jar.module}"/>
       <pathelement location="dist/test.jar"/>
   </path>
  <target name="compile">
     <mkdir dir="build"/>
     <javac destdir="build"
            debug="on"
            optimize="on">
        <src path="src"/>
     </javac>
  </target>
  <target name="makejar" depends="compile">
     <mkdir dir="dist"/>
     <jar jarfile="dist/${jar.module}">
        <fileset dir="build">
            <include name="**/*.class"/>
      <exclude name="test/*.class"/>
        </fileset>
      </jar>
     <jar jarfile="dist/test.jar">
        <fileset dir="build">
            <include name="test/*.class"/>
        </fileset>
      </jar>
     <delete dir="build"/>
  </target>
  <target name="test" depends="makejar">
     <java fork="no" failonerror="yes"
           classname="${test.class}">
         <classpath refid="test.classpath"/> 
         <arg line=""/>
     </java>
  </target>
  <target name="clean">
     <delete dir="build"/>
     <delete dir="dist"/>
  </target>

</project>


 </source>
   
  
 
  



Generates java2s.jar

   <source lang="java">

<?xml version="1.0"?> <project name="Template Buildfile" default="compile" basedir=".">

 <property name="dir.src" value="src"/>
 <property name="dir.build" value="build"/>
 <property name="dir.dist" value="dist"/>
 
 <target name="prepare">
   <mkdir dir="${dir.build}"/>
   <mkdir dir="${dir.dist}"/>
 </target>
 <target name="clean"
         description="Remove all generated files.">
   <delete dir="${dir.build}"/>
   <delete dir="${dir.dist}"/>
 </target>
 <target name="compile" depends="prepare"
         description="Compile all source code.">
   <javac srcdir="${dir.src}" destdir="${dir.build}"/>
 </target>
 <target name="jar" depends="compile"
         description="Generates jexp.jar in the "dist" directory.">
   <jar jarfile="${dir.dist}/jexp.jar" 
        basedir="${dir.build}"/>
 </target>

</project>


 </source>
   
  
 
  



Jar file: exclude files

   <source lang="java">

<?xml version="1.0"?> <project name="yourname" basedir=".." default="all">

 <property name="dist" location="dist/"/> 
 <property name="lib" location="lib/"/> 
 <property name="src" location="src/"/> 
 <path id="class.path">
   <pathelement path="${src}"/> 
   <fileset dir="${lib}">
     <include name="**/*.jar"/>
     <include name="**/*.zip"/>
   </fileset> 
   <fileset dir="/dev">
     <include name="**/*.jar"/>
     <include name="**/*.zip"/>
   </fileset> 
 </path>
 
 
 <target name="clean">
   <delete>
     <fileset dir="${src}" includes="**/*.class"/>
   </delete>
   <delete dir="${dist}"/>
 </target>
 
 <target name="zip" depends="clean">
   <tstamp/>
   <mkdir dir="${dist}"/>
   <zip destfile="${dist}\actionServlet-${DSTAMP}${TSTAMP}.zip">
     <zipfileset dir=".">
       <exclude name="${dist}"/>
     </zipfileset>
   </zip>
 </target>
 <target name="compile">
   <javac>
     <src path="${src}" />
     <classpath refid="class.path"/> 
     <include name = "*/**" />
   </javac>
  </target>
 <target name="jar" depends="compile">
   <mkdir dir="${dist}"/>
   <tstamp/>
   <jar
     basedir="src"
     jarfile="${dist}/actionServlet.jar"
     excludes="**/*.java, *.mdb"
   />
 </target>
 <target name="all" depends="jar"/>

</project>

 </source>
   
  
 
  



Jar file with fileset and exclude

   <source lang="java">

<?xml version="1.0"?>


<project name="amorph" default="build" basedir=".">


 <path id="base.classpath">
   <fileset dir="lib">
     <include name="**/*.jar"/>
   </fileset>
 </path>
 
 <target name="init">
   <mkdir dir="build" />
   <mkdir dir="build/classes"/>
 </target>
 
 <target name="compile">
   <javac srcdir="src" destdir="build/classes">
     <classpath refid="base.classpath" />
   </javac>
 </target>
 
 <target name="build" description="compiles and packs the project" depends="init,compile">
   <jar destfile="build/amorph.jar"
          basedir="build/classes"  >
     <fileset dir=".">
       <exclude name="build/**/*.*"/>
       <exclude name=".classpath"/>
       <exclude name=".project"/>
       <exclude name="bin/**/*.*"/>
     </fileset>
   </jar>  
 </target>

</project>

 </source>
   
  
 
  



Jar with includes and excludes

   <source lang="java">

<?xml version="1.0"?> <project name="JAR Demos" default="jar1" basedir=".">

 <property name="dir.src" value="src"/>
 <property name="dir.build" value="build"/>
 <property name="dir.dist" value="dist"/>
 
 <target name="prepare">
   <mkdir dir="${dir.build}"/>
   <mkdir dir="${dir.dist}"/>
 </target>
 <target name="clean"
         description="Remove all generated files.">
   <delete dir="${dir.build}"/>
   <delete dir="${dir.dist}"/>
 </target>
 <target name="compile" depends="prepare"
         description="Compile all source code.">
   <javac srcdir="${dir.src}" destdir="${dir.build}"/>
 </target>
 <target name="jar1" depends="compile"
         description="Basic jar task demo">
   <jar jarfile="${dir.dist}/jexp.jar" basedir="${dir.build}"/>
 </target>
 <target name="jar2" depends="compile"
         description="Shows includes and excludes">
   <jar jarfile="${dir.dist}/jexp.jar" 
        basedir="${dir.build}"
        includes="**/*.class"
        excludes="**/UnitTest*.class"/>
 </target>
 <target name="jar3" depends="compile"
         description="Same as jar2, but uses filesets">
   <jar jarfile="${dir.dist}/jexp.jar">
     <fileset dir="${dir.build}" 
              includes="**/*.class"
              excludes="**/UnitTest*.class"/>
     <fileset dir="${dir.src}"
              includes="**/*.properties"/>
   </jar>
 </target>

</project>


 </source>
   
  
 
  



Jar with includes and excludes using filesets

   <source lang="java">

<?xml version="1.0"?> <project name="JAR Demos" default="jar1" basedir=".">

 <property name="dir.src" value="src"/>
 <property name="dir.build" value="build"/>
 <property name="dir.dist" value="dist"/>
 
 <target name="prepare">
   <mkdir dir="${dir.build}"/>
   <mkdir dir="${dir.dist}"/>
 </target>
 <target name="clean"
         description="Remove all generated files.">
   <delete dir="${dir.build}"/>
   <delete dir="${dir.dist}"/>
 </target>
 <target name="compile" depends="prepare"
         description="Compile all source code.">
   <javac srcdir="${dir.src}" destdir="${dir.build}"/>
 </target>
 <target name="jar1" depends="compile"
         description="Basic jar task demo">
   <jar jarfile="${dir.dist}/jexp.jar" basedir="${dir.build}"/>
 </target>
 <target name="jar2" depends="compile"
         description="Shows includes and excludes">
   <jar jarfile="${dir.dist}/jexp.jar" 
        basedir="${dir.build}"
        includes="**/*.class"
        excludes="**/UnitTest*.class"/>
 </target>
 <target name="jar3" depends="compile"
         description="Same as jar2, but uses filesets">
   <jar jarfile="${dir.dist}/jexp.jar">
     <fileset dir="${dir.build}" 
              includes="**/*.class"
              excludes="**/UnitTest*.class"/>
     <fileset dir="${dir.src}"
              includes="**/*.properties"/>
   </jar>
 </target>

</project>


 </source>
   
  
 
  



More than one filesets for jar

   <source lang="java">


<project name="alma" default="main" basedir="." >


<property name="app.name" value="alma" /> <property name="app.package" value="com/memoire" /> <property name="app.version" value="0.36" /> <property name="app.year" value="2001" />


<property name="dir.classes" location="classes" /> <property name="dir.dist" location="dist" /> <property name="dir.javadocs" location="docs" /> <property name="dir.project" location="." /> <property name="dir.src" location="." /> <property name="dir.package" value="com/memoire" />

<property name="debug" value="on"/>

<property name="packages" value="com.memoire.*"/>


<target name="showsystem" >

  <showsystem />

</target>


<target name="prepare">

  <tstamp />
  <mkdir dir="${dir.classes}" />
  <mkdir dir="${dir.dist}" />

</target>


<target name="compile" depends="prepare">

  <javac
     srcdir="${dir.src}"
     destdir="${dir.classes}"
     classpath="${dir.src}"
     debug="${debug}"
     failonerror="no" >
     <include name="com/memoire/acme/Acme*.java"/>
     <include name="com/memoire/re/RE*.java"/>
     <include name="com/memoire/mst/Mst*.java"/>
     <include name="com/memoire/pbc/Pbc*.java"/>
     <include name="com/memoire/fu/Fu*.java"/>
     <include name="com/memoire/dnd/Dnd*.java"/>
     <include name="com/memoire/xml/Xml*.java"/>
     <include name="com/memoire/yapod/Yapod*.java"/>
     <include name="com/memoire/bu/Bu*.java"/>
     <include name="com/memoire/dja/Dja*.java"/>
     <include name="com/memoire/agl/Agl*.java"/>
     <include name="com/memoire/alma/Alma*.java"/>
     <include name="com/memoire/jedit/JEdit*.java"/>
     <include name="com/memoire/editor/Editor*.java"/>
     <include name="com/memoire/foo/Foo*.java"/>
     <include name="com/memoire/silk/Silk*.java"/>
     <include name="com/memoire/script/Script*.java"/>
     <exclude name="com/memoire/ant/*.java"/>
     <exclude name="com/memoire/editor/EditorJext.java"/>
     <exclude name="com/memoire/script/ScriptInterpreterBeanshell.java"/>
     <exclude name="com/memoire/script/ScriptInterpreterDawn.java"/>
     <exclude name="com/memoire/script/ScriptInterpreterFiji.java"/>
     <exclude name="com/memoire/script/ScriptInterpreterFoo.java"/>
     <exclude name="com/memoire/script/ScriptInterpreterPnuts.java"/>
     <exclude name="com/memoire/script/ScriptInterpreterPython.java"/>
     <exclude name="com/memoire/script/ScriptInterpreterRhino.java"/>
     <exclude name="com/memoire/script/ScriptInterpreterRuby.java"/>
  </javac>

</target>


<target name="dist" depends="compile">

  <jar jarfile="${dir.dist}/${app.name}.jar"
       manifest="manifest-alma.txt" >
     <fileset dir="${dir.classes}" >
        <patternset>
           <exclude name="**/dependency cache"/>
        </patternset>
     </fileset>
     <fileset dir="${dir.src}" >
        <patternset>
           <include name="**/*.dja"/>
           <include name="**/*.foo"/>
           <include name="**/*.gif"/>
           <include name="**/*.txt"/>
        </patternset>
     </fileset>
  </jar>

</target>


<target name="main" depends="compile, dist" >

  <echo>Alma application package created</echo>

</target>


<target name="javadocs" depends="prepare">

  <mkdir dir="${dir.javadocs}"/>
  <javadoc packagenames="${packages}"
           sourcepath="${dir.src}"
           destdir="${dir.javadocs}"
           classpath="${dir.src}"
           author="true"
           version="true"
           use="true"
           windowtitle="${app.name} API"
           doctitle="<h1>${app.name}</h1>"
  />

</target>


<target name="clean" >

  <delete dir="${dir.dist}" />
  <delete dir="${dir.classes}" />

</target>


<target name="all" depends="clean,main,javadocs" >

  <echo>Alma application package cleaned and created</echo>

</target>


<target name="app-run" depends="main" >

  <java classname="com.memoire.alma.Alma"
     classpath="${dir.dist}/${app.name}.jar"
     fork="yes">
  </java>

</target> <target name="run-alma" depends="main" >

  <java classname="com.memoire.alma.Alma"
     classpath="${dir.dist}/${app.name}.jar"
     fork="yes">
  </java>

</target> <target name="run-dja" depends="main" >

  <java classname="com.memoire.dja.Dja"
     classpath="${dir.dist}/${app.name}.jar"
     fork="yes">
  </java>

</target> <target name="run-agl" depends="main" >

  <java classname="com.memoire.agl.Agl"
     classpath="${dir.dist}/${app.name}.jar"
     fork="no">
  </java>

</target> <target name="run-foo" depends="main" >

  <java classname="com.memoire.foo.Foo"
     classpath="${dir.dist}/${app.name}.jar"
     fork="no">
  </java>

</target> <target name="run-reformatage" depends="main" >

  <java classname="com.memoire.agl.AglOutilReformatage"
     classpath="${dir.dist}/${app.name}.jar"
     fork="no">
  </java>

</target> <target name="run-coloration" depends="main" >

  <java classname="com.memoire.agl.AglOutilColoration"
     classpath="${dir.dist}/${app.name}.jar"
     fork="no">
  </java>

</target>

</project>

 </source>