使用ant 的javac 运行时logback日志 pattern为 [null:-1] 的问题
2015-12-18 09:13
597 查看
<project default="jar" name="da" basedir="."> <!-- 工程目录结构 project |-bin |-src |-lib |-out |-build.xml --> <!--<echoproperties></echoproperties> 使用这个可以看到所有的隐式变量,如java.home--> <property name="lib.dir" value="lib" /> <property name="src.dir" value="src" /> <property name="classes.dir" value="build" /> <property name="output.dir" value="out" /> <property name="jarname" value="DataAccess.jar" /> <property name="mainclass" value="com.lc.da.DARun" /> <!-- 第三方jar包的路径 --> <path id="lib-classpath"> <fileset dir="${lib.dir}"> <include name="**/*.*" /> </fileset> </path> <target name="clean" > <echo>第1步:</echo> <echo>清除${basedir}\${classes.dir}\classes目录</echo> <echo>清除${basedir}\${output.dir}\输出目录</echo> <delete dir="${classes.dir}"/> <delete dir="${output.dir}"/> </target> <!-- 1. 初始化工作,如创建目录等 --> <target name="init" depends="clean"> <echo>第2步:</echo> <echo>创建${basedir}\${classes.dir}\classes目录</echo> <echo>创建${basedir}\${output.dir}\输出目录</echo> <mkdir dir="${classes.dir}" /> <mkdir dir="${output.dir}" /> </target> <!-- 2. 编译 --> <target name="compile" depends="init"> <!--这里因为javac的问题,导致打出来的jar运行时,logback的日志patten为 [null-1] 为了解决此问题,当时,采用直接将eclipse编译好的bin目录打包起来,但是这样存在潜在隐患, 查找资料 http://www.xuebuyuan.com/1914918.html 修改javac的参数,解决了此问题 --> <!--encoding="UTF-8" fork="true" 不影响 executable="C:/Program Files/Java/jdk1.7.0_80/bin/javac" 不影响 debug="true" 经测试,加上这句就好了 includeantruntime="on" warning: 'includeantruntime' was not set --> <echo>第3步:</echo> <echo>${JAVA_HOME}</echo> <echo>编译${basedir}\${src.dir}\中的源代码,放到第2步创建的${basedir}\${classes.dir}\目录</echo> <javac srcdir="${src.dir}" destdir="${classes.dir}" encoding="UTF-8" includeantruntime="on" debug="true" > <!-- <compilerarg line="-encoding UTF-8" /> --> <classpath refid="lib-classpath" /> </javac> </target> <!-- 3. 打包jar文件 --> <target name="jar" depends="compile"> <!-- <echo>第4步:</echo> <echo>将${basedir}\${lib.dir}下的文件copy到${basedir}\${output.dir}\lib\下</echo> --> <copy todir="${output.dir}/lib"> <fileset dir="${lib.dir}" /> </copy> <!--Create a property containing all .jar files, prefix lib/, and seperated with a space--> <pathconvert property="mf.classpath" pathsep=" "> <mapper> <chainedmapper> <!-- jar包文件只留文件名,去掉目录信息 --> <flattenmapper /> <!-- add lib/ prefix --> <globmapper from="*" to="lib/*" /> </chainedmapper> </mapper> <path refid="lib-classpath" /> </pathconvert> <!-- jar文件的输出路径 --> <echo>第4步:将第3步的${basedir}\${classes.dir}\下编译好的class文件打成${jarname}包放到${basedir}\${output.dir}</echo> <jar destfile="${output.dir}/${jarname}" basedir="${classes.dir}" encoding="UTF-8" > <manifest> <attribute name="Main-class" value="${mainclass}" /> <attribute name="Class-Path" value="${mf.classpath}" /> </manifest> </jar> </target> </project>
相关文章推荐
- JAVA 学习笔记-01
- Java深入 - Java 内存分配和回收机制
- java实用基础
- java序列化和反序列化
- 关于java代码质量的问题
- 关于java代码质量的问题
- 详解Java的Hibernate框架中的List映射表与Bag映射
- 关于java代码质量的问题
- java系列: 对不起,JavaFX——Java 8目前还不能救你(zz)
- 欢迎使用CSDN-markdown编辑器
- Java多线程总结之由synchronized说开去(转)
- Java之美[从菜鸟到高手演变]之Exception
- Spring处理请求参数的几个小细节
- 数据库锁等待超时 java.sql.SQLException: Lock wait timeout exceeded
- 百度基础地图API- java.lang.UnsatisfiedLinkError、地图无法正确显示
- unable to fine a java virtual machine
- Java 初始化与清理
- MyEclipse中查看JDK源代码
- spring NamedParameterJdbcTemplate
- java容器源码分析(七)——LinkedHashMap