逛奔的蜗牛

我不聪明,但我会很努力

   ::  :: 新随笔 ::  ::  :: 管理 ::
@import url(http://www.cppblog.com/cutesoft_client/cuteeditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
使用Ant打包Jar文件
主要是lib/*.jar的路径需要注意: jar包里的jar包是不能被识别为classpath

使用方法:如果代码是如下面的目录结构组织的,不需要修改什么,直接在终端运行ant命令即可在out目录输出对应的jar文件。
<?xml version="1.0" ?>
<project default="jar" name="Acid">
    
<!-- 工程目录结构
    project
        |-bin
        |-src
        |-lib
        |-out
        |-build.xml
    
-->
    
<property name="lib.dir" value="lib"/>
    
<property name="src.dir" value="src"/>
    
<property name="classes.dir" value="bin"/>

    
<property name="output.dir" value="out"/>
    
<property name="jarname" value="Test.jar"/>
    
<property name="mainclass" value="com.biao.Test"/>

    
<!-- 第三方jar包的路径 -->
    
<path id="lib-classpath">
        
<fileset dir="${lib.dir}">
            
<include name="**/*.jar"/>
        
</fileset>
    
</path>

    
<!-- 1. 初始化工作,如创建目录等 -->
    
<target name="init">
        
<mkdir dir="${classes.dir}"/>
        
<mkdir dir="${output.dir}"/>
    
</target>

    
<!-- 2. 编译 -->
    
<target name="compile" depends="init">
        
<javac srcdir="${src.dir}" destdir="${classes.dir}">
            
<compilerarg line="-encoding UTF-8"/>
            
<classpath refid="lib-classpath"/>
        
</javac>
    
</target>

    
<!-- 3. 打包jar文件 -->
    
<target name="jar" depends="compile">
        
<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文件的输出路径 -->
        
<jar destfile="${output.dir}/${jarname}" basedir="${classes.dir}">
            
<manifest>
                
<attribute name="Main-class" value="${mainclass}"/>
                
<attribute name="Class-Path" value="${mf.classpath}"/>
            
</manifest>
        
</jar>
    
</target>
</project>
posted on 2012-09-17 01:25 逛奔的蜗牛 阅读(8865) 评论(3)  编辑 收藏 引用 所属分类: Java

评论

# re: Java:Ant打包jar文件(有lib目录) 2012-12-03 17:50 daisy
基本看着你的写的 为嘛我的有问题呢  回复  更多评论
  

# re: Java:Ant打包jar文件(有lib目录) 2012-12-03 17:52 daisy
打包后的jar文件 里面的class文件为空 还有一个问题想请教一下 生成的jar的META-INF/MANIFEST.MF 的 Class-path 中都jar文件都是连在一起 运行不会报错吗。。。。  回复  更多评论
  

# re: Java:Ant打包jar文件(有lib目录) 2013-03-01 17:25 逛奔的蜗牛
用Ant自己写任务太麻烦了,现在用Maven,使用起来很简单@daisy
  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理