`
hypgr
  • 浏览: 276961 次
社区版块
存档分类
最新评论

无所不能的“蚂蚁”--Ant(二)

阅读更多

java程序运行的扩展

1.带有参数的应用程序运行

Ant在<java>任务中提供了<arg>元素,<arg>有四种属性value,file,line,path

public class Hello {
    public static void main(String[] args) {
        System.out.println("Hello " + args[0]);      
        File file = new File(args[1]);
        String[] filename = file.list();
        
        for(int i = 0; i < filename.length; i++) {
            System.out.println(filename[i]);
        }
    }
}

 

build.xml

<?xml version="1.0"?>
<project name="project" default="run">
 <property name="run.classpath" value="bin"></property>
 
 <target name="compile">
  <javac destdir="bin" srcdir="src"></javac>
 </target>
 
 <target name="run" depends="compile">
  <java classname="org.ant.chapter1.Hello">
   <classpath path="${run.classpath}"></classpath>
   <arg value="Ant"/>
   <arg file="D:\rag"/>
  </java>
 </target>
</project>

Buildfile: D:\MyEclipse\workspace\sad\build.xml
compile:
run:
     [java] Hello Ant
     [java] hello.dat
BUILD SUCCESSFUL
Total time: 734 milliseconds

 

2.控制新的JVM

一般的<java>任务都运行在当前的JVM中,单一些特定的情况下将Ant运行在新的JVM下面,这时只需要将<java>中的一个属性fork设置为true就可以了.

我们知道,java命令提供了许多的运行参数,用于指定JVM的属性,同样在Ant也提供相应的属性,看例子:

<?xml version="1.0"?>
<project name="project" default="run">
 <property name="run.classpath" value="bin"></property>
 <property name="Search.JVM.extra.args" value="-Xincgc"></property>
 
 <target name="compile">
  <javac destdir="bin" srcdir="src"></javac>
 </target>
 
 <target name="run" depends="compile">
  <java classname="org.ant.chapter1.Hello" fork="true" 
   maxmemory="64m">
   <classpath path="${run.classpath}"></classpath> 
   <jvmarg line="${Search.JVM.extra.args}"/>
   <arg value="Ant"/>
   <arg file="D:\rag"/>
  </java>
 </target>
</project>

 

3.运行jar文件,使用failonerror处理错误

<java>同样提供了运行jar文件的属性

MANIFEST.MF

Mainfest-Version: 1.0
Created-By: myth
Sealed: false
Main-Class: org.ant.chapter1.Hello

build.xml

<?xml version="1.0"?>
<project name="project" default="run">
 <property name="run.classpath" value="bin"></property>
 <property name="Search.JVM.extra.args" value="-Xincgc"></property>
 
 <target name="compile">
  <javac destdir="bin" srcdir="src"></javac>
 </target>
 
 <target name="jar" depends="compile">
  <jar destfile="test.jar" update="true" 
   manifest="MANIFEST.MF">
   <fileset dir="bin">
    <include name="**/*.class"/>
   </fileset>
  </jar>
 </target>
 
 <target name="run" depends="jar">
  <java fork="true" maxmemory="64m" jar="test.jar">
   <classpath path="${run.classpath}"></classpath> 
   <jvmarg line="${Search.JVM.extra.args}"/>
   <arg value="Ant"/>
   <arg file="D:\rag"/>
  </java>
 </target>
</project>

 

Buildfile: D:\MyEclipse\workspace\sad\build.xml
compile:
jar:
      [jar] Updating jar: D:\MyEclipse\workspace\sad\test.jar
run:
     [java] Hello Ant
     [java] hello.dat
BUILD SUCCESSFUL
Total time: 875 milliseconds

在某些情况下,我们不希望由于一些不重要的任务构建失败,而导致整个构建的失败,所以Ant提供了一个共同的属性-failonerror,多数任务的默认值为failonerror="true",既当此任务构建失败时,失败信息会传递给控制台,并导致build failed,failonerror只支持在新的JVM里运行.

 <target name="run" depends="jar">
  <java fork="true" maxmemory="64m" jar="test.jar"
   failonerror="false" >
   <classpath path="${run.classpath}"></classpath> 
   <jvmarg line="${Search.JVM.extra.args}"/>
   <arg value="Ant"/>
   <arg file="D:\rag"/>
  </java>
 </target>

 

Buildfile: D:\MyEclipse\workspace\sad\build.xml
compile:
jar:
run:
     [java] java.lang.NullPointerException
     [java] at org.ant.chapter1.Hello.main(Hello.java:27)
     [java] Hello Ant
     [java] Exception in thread "main"
     [java] Java Result: 1
BUILD SUCCESSFUL
Total time: 984 milliseconds

可以看出虽然run构建失败,但是Ant还是执行了,原来的jar文件,并且BUILD SUCCESSFUL!!

 

使用Ant运行tomcat

Ant使用<exec>任务运行本地程序,先看一个例子:

<?xml version="1.0"?>
<project name="project" default="run">
 <target name="run">
  <exec executable="cmd">
   <arg value="/C a.bat"/>
  </exec>
 </target>
</project>

a.bat

@echo off
echo Hello >> a.txt

运行完后,会在根目录生成a.txt文件,里面内容为Hello

 

下面我们来运行tomcat

<?xml version="1.0"?>
<project name="project" default="tomcat-start">
 <property name="tomcat.dir" value="c:/Tomcat5"></property>
 
 <target name="tomcat-start">
  <exec dir="${tomcat.dir}/bin" executable="cmd">
   <env key="CATALINA_HOME" path="${tomcat.dir}"/>
   <arg value="/C startup.bat"/>
  </exec>
 </target>
 <target name="tomcat-stop">
  <exec dir="${tomcat.dir}/bin" executable="cmd">
   <env key="CATALINA_HOME" path="${tomcat.dir}"/>
   <arg value="/c shutdown.bat"/>
  </exec>
 </target>
</project>

成功!!   

分享到:
评论

相关推荐

    MatlabGUI使用java组件无所不能-uicomponent.m

    MatlabGUI使用java组件无所不能-uicomponent.m 是不是曾经想做出漂亮的GUI 界面? 是不是曾经想在 Matlab GUI里面显示网页? 看看这个界面: matlab_java.png 所以,...

    你的习惯对了 你无所不能-习惯的力量PPT模板.pptx

    标题中的“你的习惯对了,你无所不能-习惯的力量PPT模板”暗示了这个PPT内容将探讨习惯如何塑造个人能力和成功。描述中提到“每天有40%的行为并不是真正由决定促成的,而是出于习惯”,这引用了一个研究发现,强调了...

    苹果JBL无所不能遥控器操作说明

    #### 二、操作说明 ##### 操作前注意事项 1. **静电防护**:在插入或拔出音频线缆之前,建议先关闭设备电源,这样可以延长设备寿命,并有助于保护设备免受静电伤害。 2. **防水防潮**:设备不可暴露在滴水或溅水中...

    互联网 智慧能源-无所不能 完整

    智慧能源-无所不能 完整

    万能编程器软件---无所不能

    总的来说,"万能编程器软件---无所不能"不仅是一个工具,更是一种解决方案,它简化了对各种类型芯片编程的过程,提高了开发效率。无论是用于学习、原型设计还是大规模生产,这样的软件都是电子工程师的得力助手。其...

    让迅雷无所不能下载.rar

    "让迅雷无所不能下载"这个标题暗示了一个可能的增强迅雷下载功能的补丁或者插件,使得用户能够下载更多类型或者原本限制下载的资源。 首先,迅雷的核心技术是P2SP(peer-to-server-peer),它结合了传统的P2P和P2S...

    让迅雷无所不能下载、通吃一切

    让迅雷无所不能下载、通吃一切 让迅雷无所不能下载、通吃一切

    能源互联网白皮书-to 无所不能.pptx

    能源互联网白皮书-to 无所不能.pptx

    电脑测试软件很好用无所不能

    标题中的“电脑测试软件很好用无所不能”表明我们讨论的是一款功能强大的计算机系统诊断和测试工具,它能够全面地分析和评估电脑硬件和软件的性能。这类软件通常包含多个模块,用于测试处理器、内存、硬盘、显卡等...

    让迅雷无所不能的工具 迅雷下载其他资源 电驴 快车

    本文将详细介绍如何利用特定的工具或方法,使迅雷能够处理这些非传统迅雷链接的资源,实现“让迅雷无所不能”的目标。 首先,了解电驴(eMule)和快车(FlashGet)的下载机制。电驴是一种P2P(peer-to-peer)共享网络,...

    真正的无所不能!

    标题中的“真正的无所不能!”可能是指这个压缩包包含了大量的IT学习资源,涵盖了多个领域的知识,而描述中的“我所下的所有书的整合!绝对经典!只要你能想到的这里面都有!”进一步证实了这一点,说明这个集合包含...

    VB无所不能系列(包含文档说明和代码示例)

    根据提供的文件信息,以下是关于VB无所不能系列的详细知识点。 ### 1. 指针 指针在VB中的使用与C语言等其他编程语言中的使用有所不同,因为VB是一种高级语言,它对内存访问进行了封装。在VB中,可以通过API调用和...

    重磅!谷歌发布5620亿参数多模态模型PaLM-E,机器人操控无所不能

    谷歌发布5620亿参数多模态模型PaLM-E,机器人操控无所不能" 这个标题揭示了谷歌在人工智能领域的一项重大突破,即他们推出了一个具有5620亿参数的多模态模型,命名为PaLM-E。这里的“重磅”暗示了该发布的重要性,...

    能源互联网白皮书-to 无所不能.zip

    "能源互联网白皮书-to 无所不能.zip" 文件包含了对这一主题的深入探讨,尤其通过其包含的 "能源互联网白皮书-to 无所不能.pptx" 讲义,我们可以从多个方面了解能源互联网的核心理念和应用实践。 1. **定义与概念**...

    VB无所不能,叫你加深了解

    网络精选教程,希望大家不要忘记VB,包括GDI绘画等详解的例子

    互联网 智慧能源-无所不能 .pptx

    【智慧能源】是一种结合了互联网技术的新型能源管理体系,旨在通过智能化的方式优化能源生产、分配和消费,提高能源效率,减少环境污染,同时满足人们日益增长的多元化能源需求。这一概念的提出,源于对传统能源系统...

    超级模块4.2无所不能

    无所不能 相当强大 目前最强大内容最丰富的超级模块

    互联网 智慧能源-无所不能 完整pptx.pptx

    【智慧能源】是一种结合了互联网技术的新型能源管理系统,它超越了传统的能耗监测,实现了监测、考核、管理、控制的全面整合,形成了一个四位一体的精细化能源管理平台。该平台可以细化到对每个用户或者房间的能耗...

Global site tag (gtag.js) - Google Analytics