繁体   English   中英

如何配置Ant以从类中运行选择?

[英]How do you configure Ant to get to run selections from the class?

嗯...很抱歉我的措辞有什么奇怪,因为这是我第一次在这样的网站上提问。 还有很多我不太了解的事情,但是我会尽力尝试阐明我的问题。

我是Apache Ant的新手,我尝试按照Apache手册中的步骤运行基本程序,并对其进行一些配置以尝试其他代码。 基本上,使用ant compileant jarant run可以正常工作。

在提供了build.xml设置之后,我尝试执行“是-否”用户输入之类的操作,看起来似乎还可以。

Build.xml

<project>

<target name="clean">
    <delete dir="build"/> 
</target>

<target name="compile">          
    <javac srcdir="src" destdir="classes" />  
</target>

<target name="jar">
        <jar destfile="build/jar/Circle.jar" basedir="classes"> 
        <manifest>
            <attribute name="Main-Class" value="Circle"/> 
        </manifest>
    </jar>
</target>

<target name="input"> 
    <input message="Do you want to show the details of a Circle?" validargs="y,n" addproperty="do.delete"/>
    <condition property="do.abort">
        <equals arg1="n" arg2="${do.delete}"/>
    </condition>
    <fail if="do.abort">Build aborted by user.</fail>
</target>

<target name="run" depends="input">
    <java classname="Circle" fork="true"> 
        <classpath path="classes" />
    </java>
</target>

Circle.java

import java.lang.*;
public class Circle{
public static void main(String[] args){

    int radius;
    double circumference;
    double areaOfCircle;     
    radius=10;              
    circumference =2* 3.1416*radius;            
    areaOfCircle = 3.1416 * radius *radius;

    System.out.println();
    System.out.println("********************************************************");
    System.out.println("*  Radius of circle is   " + radius +"                 *");
    System.out.println("*  Circumference of circle is   " + circumference +"   *");
    System.out.println("*  Area of circle is   " + areaOfCircle +"             *");
    System.out.println("********************************************************");
} 

}

如何配置它,以便我可以在源代码中放入选择语句以要求用户输入? 诸如在构建文件中删除输入目标并放入“您想显示圆的细节吗?”之类的东西。 在Circle文件中。

据我了解,Ant可以运行类而无需像主类(?)这样的东西。

错误的Ant只能运行正确编译的Java类。 “ main”方法是Java程序的标准入口点。

因此,您的代码有两个问题。

  1. 您的主类中没有定义主方法(在jar的清单中指定)
  2. 您正在错误地调用该类。

要么利用您定义了主类的事实

<target name="jar">
    <jar destfile="myprog.jar" basedir="classes">
        <manifest>
            <attribute name="Main-Class" value="Circle"/> 
        </manifest>
    </jar>
</target>

<target name="run" depends="jar">
    <java jar="myprog.jar" fork="true"/>
</target>

或通过指定类名和类路径来运行代码。

<target name="run" depends="jar">
    <java classname="Circle" fork="true">
        <classpath>
            <pathelement path="classes"/>
        <classpath>
    </java>
</target>

有关完整且非常完整的示例(还涵盖了管理第三方依赖关系的高级主题),请参见以下内容:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM