【问题标题】:Ant build doesn't make jar fileAnt build 不会生成 jar 文件
【发布时间】:2013-08-21 17:02:47
【问题描述】:

我得到了一个 2000 年的旧剧本。 这一切都在 Java 中,并且有一个编译文件:

 <?xml version="1.0"?>
    <project name="chat" default="compile" basedir=".">
        <target name="init">
            <property name="conf.dir" value="conf" />
            <property name="src.dir" value="src" />
            <property name="resource.dir" value="resource" />
            <property name="build.dir" value="build" />     
            <property name="release.dir" value="release" />
            <property name="etc.dir" value="etc" />
            <property name="lib.dir" value="lib" />
        </target>



        <target name="clean" depends="init">
            <delete dir="${build.dir}" />       
            <delete dir="${release.dir}" />
        </target>

        <target name="compile" depends="init">
            <mkdir dir="${build.dir}" />
            <javac srcdir="${src.dir}" destdir="${build.dir}" includeAntRuntime="false" debug="true" optimize="false" />        
        </target>

        <target name="release" depends="compile">       
            <mkdir dir="${release.dir}" />

            <jar destfile="${release.dir}/chat_service.jar" basedir="${build.dir}"  includeantruntime="false" />        
        </target>

    </project>

当我在 Windows 中使用 ant 运行它时,命令提示符显示:

Buildfile: build.xml

init: 

compile: BUILD SUCCESSFUL

但它不会创建 jar 文件。 它所做的只是复制确切的项目并将其编译为类文件。

有谁知道如何创建正确的文件? 这是一个聊天服务器,我需要它来运行我的客户端。

【问题讨论】:

    标签: java ant build jar


    【解决方案1】:

    构建文件的默认目标是compile

    <project name="chat" default="compile" basedir=".">
    

    因此,如果您在没有指定目标的情况下调用 ant,则将执行 compile 目标。要执行release 目标,请使用

    ant release
    

    【讨论】:

      【解决方案2】:

      您应该添加另一个目标部分来生成 jar 文件。 例如:

      <target name="jar" depends="compile">
          <mkdir dir="${jar.dir}" />
          <jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${classes.dir}">
              <manifest>
                  <attribute name="Main-Class" value="${main-class}" />
                  <attribute name="Class-Path" value="config/ properties/ ${manifest.classpath}" />
              </manifest>
          </jar>
      
      </target>
      

      最后,您当然应该为自己的文件和属性配置该块。

      【讨论】:

      • 不需要添加额外的目标,因为已经有一个带有jar任务的目标。它只需要执行/使用(ant release)
      猜你喜欢
      • 2013-07-15
      • 2012-04-16
      • 1970-01-01
      • 2019-09-14
      • 2015-09-17
      • 1970-01-01
      • 1970-01-01
      • 2017-06-15
      • 1970-01-01
      相关资源
      最近更新 更多