您的位置:首页 > 编程语言 > Java开发

使用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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: