一、打war包时出现的问题
1. Ant 默认 编译器 面对 Annotation中的编译错误
我解决的办法,是直接使用 Eclipse的JDT 编译器
a. 找到 jdtCompilerAdapter.jar and org.eclipse.jdt.core_3.7.0.v_B61.jar(根据不同的eclipse版本可能会有不同的jar ) (search org.eclipse.jdt.core in eclipse directory)
b. 然后把它们放入 ${ANT_HOME}/lib
c.加入配置<property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/> in builder.xml
二、打包可运行jar
打可运行jar的方式,有两种,1是把引用到的jar包全部都unjar到classes里面,然后一起打包成一个jar。2是把引用到的jar放在外面,然后在ant中使用引用的方式调用。
以下是build.xml的内容:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project basedir="./.." default="build" name="offlinePimsCS">
<!--定义属性-->
<property name="src.dir" value="src" />
<property name="classes.dir" value="classes" />
<property name="lib.dir" value="lib" />
<property name="jarname" value="pimsClient.jar" />
<property name="mainfunction" value="com.naxl.pims.main.main" />
<path id="classpath">
<fileset dir="${lib.dir}">
<include name="**/*.jar" />
</fileset>
</path>
<!-- 编译 -->
<target name="compile">
<delete dir="${classes.dir}"></delete>
<mkdir dir="${classes.dir}" />
<!-- javac -->
<javac srcdir="${src.dir}" destdir="${classes.dir}" encoding="UTF-8" includeAntRuntime="false">
<classpath refid="classpath">
</classpath>
</javac>
</target>
<!-- 打jar包 -->
<target name="build" depends="compile">
<!-- 解压内容到classes中,将来与classes一并创建成jar
<unjar dest="${classes.dir}">
<fileset dir="${lib.dir}" includes="**/*.jar" />
</unjar>
-->
<!-- 生成清单 -->
<manifestclasspath property="manifest.classpath" jarfile="${jarname}">
<classpath refid="classpath" />
</manifestclasspath>
<!-- 打包生成jar -->
<jar basedir="${classes.dir}" destfile="${jarname}" encoding="utf-8">
<manifest>
<attribute name="Main-Class" value="${mainfunction}" />
<attribute name="Class-Path" value="${manifest.classpath}" />
</manifest>
<fileset dir="${src.dir}">
<include name="*.properties" />
</fileset>
<fileset dir="${src.dir}">
<include name="com/naxl/pims/images/*" />
</fileset>
</jar>
<delete dir="${classes.dir}"></delete>
</target>
</project>