`
longzijian
  • 浏览: 38370 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

ant部署 简单入门

    博客分类:
  • J2EE
阅读更多

 通过一个build.xml脚本进行Ant部署的示例,主要执行了下面5个步骤:

 

1.定义变量

   build.xml脚本定义了整个脚本将使用的大量变量;

  

<project name="HelloServlet" default="deploy" basedir=".">
    <description>
        Build file to compile, package and deploy HelloServlet
    </description>

    <property name="servlet-name" value="HelloServlet"/>
    <property name="weblogic.user" value="weblogic"/>
    <property name="weblogic.password" value="weblogic"/>
    <property name="weblogic.adminurl" value="t3://localhost:7001"/>

 

2.创建目录

    build.xml脚本为HelloServlet.class文件创建一个类目录,WebLogic Server在这个目录中查找已编译的Java类。

   

<target name="init">
        <mkdir dir="WEB-INF/classes"/>
</target>

 

3.编译Java文件

   build.xml脚本调用Java编译器javac,把Java文件编译到目录WEB-INF \ class下,

        以后WebLogic Server将在这里查找它们。

  

<target name="compile" depends="init">
        <javac srcdir="." destdir="WEB-INF/classes"/>
</target>

 

4.使用jar创建新的.war包(应用程序包);

  

<target name="package" depends="compile">
        <war destfile="${servlet-name}.war" webxml="WEB-INF/web.xml">
            <fileset dir=".">
                <exclude name="${servlet-name}.war"/>
                <exclude name="WEB-INF/web.xml"/>
                <exclude name="META-INF/MANIFEST.MF"/>
            </fileset>
        </war>
</target>

 

5.部署.WAR包

   调用WebLogic的Deployer工具进行组件的部署。

   <target name="deploy" depends="package">
        <wldeploy action="deploy" 
          source="${servlet-name}.war"
          user="${weblogic.user}" password="${weblogic.password}" 
          adminurl="${weblogic.adminurl}" />
    </target>
    
</project>

 

 

简单详述ant

 

ANT的组成(主要由三部分组成:Project、Target、Task):

   1、project(项目)

        基本属性:name、default、basedir。

        一个build.xml只能存在一个project工程。
     

      name :项目名称
      default :缺省开始执行的target
      basedir :用于计算所有其他路径的基路径。
    

 2、target

      一个项目可以定义一个或多个target;

      一个target是一系列你想要执行的任务,如编译任务、打包任务、混淆任务。
  
       target的基本属性:

             name:target的名字

             depends:该target依赖关系

             description: target的描述信息

     

    ant  在执行时以target为单位,执行顺序是从下至上,依次执行,

           但是target 的 depends属性 可以决定了哪个target先执行,因此我们可以通过target来构造编译顺序。

           假如某个target没有depends属性,那么就按顺序执行。

 

3、task

     ant 执行的一系列任务是由target构成的,而target又是由数个小的task构成的,

      task 任务是最小的运行单位,我们可以把copy、delete、mkdir等操作认为是一个小任务。


   (1)copy任务


      a.拷贝单个文件:          

<copy file="demo/manifest.mf" todir="temp/build/meta-inf" /> 

           解释:把一个文件拷贝到拷贝相关文件夹中。


     b.拷贝文件夹:       

<copy todir="temp/build">
     <fileset dir="temp/classes"/>
</copy> 

             解释:把temp/build目录下的所有文件,拷贝到temp/classes目录中去


      c.替换拷贝       

<copy todir="temp/build">
   <fileset dir="temp/classes" includes="*.class" />
   <filterset>
        <filter token="@time@" value="${app.time}"/>
   </filterset>
</copy> 

             解释:<filterset>过滤集,可以将temp/classes文件夹下的存在@time@标记的文件,

                                                        替换为变量${app.time}值。这样在完成拷贝的同时也完成了替换任务。
   (2)mkdir任务和delete任务


      a.单独的delete和mkdir任务     

//删除
 <delete dir="temp/src"/> 
 <delete file="temp/build/thumbs.db" />

//创建
<mkdir dir="temp/src"/>

    
      b. 带有条件的删除任务       

<delete>
         <fileset dir="store" includes="*.*"/>
         <fileset dir="source" excludes="*.java"/>                                  </delete>       

        解释:include表示要删除哪些文件;而excludes表示排除的文件;


   (3)replace替换任务


       a.替换某一文件中的字符串        

<replace file ="base/testing.txt">
     token="@temp@" 
     value="${newstring}"
</replace>

          解释:token是需要替换的标记;value是新值,将testing.txt文件中的@temp@替换为新值。


            b.替换某个文件夹中存在特定标记的文件   

<replace dir="temp" token="@charset@" value="${webapp.charset}"/> 

          解释:temp目录中文件,如果有存在@charset@标记的,将被替换为${webapp.charset}变量值。


            c.批量替换

<replace dir="dist" includes="${app.project}.jad" encoding="utf-8">
     <replacefilter token="@name@" value="${app.name}"/>
     <replacefilter token="@vendor@" value="${app.vendor}"/>
     <replacefilter token="@midlet@" value="${app.midlet}"/>
     <replacefilter token="@jar@" value="${app.project}"/>
     <replacefilter token="@filesize@" value="${size}"/>
     <replacefilter token="@description@" value="${app.description}"/>             
     <replacefilter token="@price@" value="${app.price}"/>
</replace>

 
   (4) javac任务 ,编译源程序 

<target name="compile" description="compile java source files">
    <javac srcdir="src"
               destdir="temp/classes"
               bootclasspath="${compile.classpath}"
               target="1.1"
               debug="on"
               deprecation="on"
               includes="*.java"
               optimize="true"
               encoding="utf-8"
     /> 
</target>

      解释:bootclasspath参数(启动类库):它已经包含了jre/lib目录下的rt.jar,以及我们自定义的类库。

              如果使用classpath参数,仅指我们定义的类库;

 

    (5) java任务

            为运行java应用程序,需要使用java任务

           a.运行一个类      

<target name="run" description="run the program">
     <java classname="${main}" classpath="${classpath}"/>
</target>

         解释:classname表示要运行的主类。

           b.运行某一特定类,并加上运行参数。

<java fork="true" classname="proguard.proguard" classpath="${proguard.classpath}">
             <arg line="-libraryjars ${proguard.classpath}"/>
             <arg line="-injars temp/${app.project}_tmp.jar"/>
             <arg line="-outjar temp/${app.project}_obf.jar"/>
             <arg line="-defaultpackage ''"/>
             <arg line="-dontusemixedcaseclassnames"/>
             <arg line="-keep public class ${app.midlet}"/>
</java>

        解释:fork参数:为true时,在新的jvm实例中运行,不影响当前jvm工作

    如何减少文件的size?
        使用3.3.2版本的proguard.jar,然后在混淆参数中添加两行代码:

<arg line = "-overloadaggressively"/>                   
<arg line="-keepclasseswithmembers public class ${app.midlet} {public void startapp();public void destroyapp(boolean);}"/>

       这样可以保证startapp和destroyapp不被打上final修饰符,同时还能更大的压缩代码,

        不过要求midlet类中startapp和destroyapp方法保持上面的形式。


(6)jar任务
        将编译好的class文件打成jar包,这是jar任务的工作:       

<target name="jar" depends="compile" description="build jar file">
  <jar jarfile="dist/${name}.jar"
         basedir="${tmp/class}"
         manifest="tmp/res/manifest.mf"
         manifestencoding="utf-8">
    <fileset dir="res" includes="*.*"/>
    <!-- 将res目录中的文件也打进jar包 -->
  </jar>
</target>

 

(7)exec任务,用以调用外部程序

<exec executable="${lib_path}/preverify.exe">
    <arg line="-classpath ${compile.classpath} -d temp/build temp/obfuscate"/>
</exec>

 

分享到:
评论

相关推荐

    ant入门教程

    但是目前主要被用于Java项目的构建, Ant是用Java语言编写,可以在多个操作系统中运行,目前在绝大部分的Java开源项目中,都选择使用Ant作为构建项目的工具,合理的使用Ant可以大大降低项目构建、部署的难度。...

    Ant命令的简介应用之快速入门

    Ant是一个Apache基金会下的跨平台的构件工具,它可以实现项目的自动构建和部署等功能。在本文中,主要让读者熟悉怎样将Ant应用到Java项目中,让它简化构建和部署操作。

    ant简单介绍

    ant入门教程,ant是一个很好用的工具,能方便地进行程序的编译、测试、部署等,简单易学。

    eclipse中ant的配置与测试

    ant入门教程,ant是一个很好用的工具,能方便地进行程序的编译、测试、部署等,简单易学。

    Ant的最完整的build.xml解释

    ant入门教程,ant是一个很好用的工具,能方便地进行程序的编译、测试、部署等,简单易学。

    Apache Ant自动化脚本入门教程及常用命令介绍

    Apache Ant是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的自动化构建。它是Apache软件基金会JAKARTA目录中的一个子项目,它有以下的优点: 跨平台性。Ant是纯Java语言...

    ant说细中文教程

    ant使用指南详细入门教程 这篇文章主要介绍了ant使用指南详细...ant 是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。在实际软件开发中,有很多地方可以用到ant。

    maven入门到精通

    在 Java世界中我们很多的开发人员选择用 Ant来构建项目,一个 build.xml能够完成编译、测试、打包、部署等很多任务,但我们也碰到了很多的问题,如 jar文件管理混乱,各个项目结构和 build.xml相差很大等等。...

    Eclipse+Web开发从入门到精通(实例版)

    4.3 用 build.xml 编写Ant 部署文件实例... 67 4.3.1 编写 build.xml 文件之前的准备... 68 4.3.2 使用 property 定义属性实例... 68 4.3.3 生成Java 实例程序... 69 4.3.4 使用编译任务编译Java 类...

    JBPM5.1入门学习

    2 入门 8 2.1 下载 8 2.2 资源 8 2.3 环境准备 9 2.3.1 安装JDK 9 2.3.2 安装Ant 9 3 DEMO(官方例子)学习 9 3.1 下载安装包 9 3.2 启动DEMO 9 3.3 学习使用Eclipse设计器 10 3.4 学习使用JBPM控制台 11 3.5 学习...

    J2EE架构设计PPT

    第一部份:介绍实例架构 结合实例讲解Web项目总体结构 分析多层结构优点 具体讲解每个层次的实现技巧 第二部分:介绍组织层次关联利器(Spring) 快速入门 Factory模式 IOC模式 ...借助Ant的自动部署

    AppFuse学习笔记(J2EE入门级框架)

    为了简化开发,预定义好了一套目录结构、基类、用来创建数据库、配置Tomcat、测试部署应用的 Ant 任务,帮助快速自动生成源程序和自动维护部分配置文件。 AppFuse2.0重构了AppFuse1.0,转到Maven2和Jdk1.5。

    react-ant:react 和 ant-design框架学习

    Create React App入门该项目是通过引导的。可用脚本在项目目录中,可以运行:npm start 在开发模式下运行应用程序。 打开在浏览器中查看它。 如果您进行编辑,则页面将重新加载。 您还将在控制台中看到任何棉绒错误...

    编程入门_Eclipse教程

    2.1. Axis2下载,并部署axis2到Tomcat 7 2.2. Eclipse下安装Axis2插件 8 2.2.1. 下载axis2的eclipse插件 8 3. 编写Web service程序 10 3.1. Axis2的简单WebService示例 10 3.1.1. 0配置POJO的Webservice 10 3.1.2. ...

    jbmp开发入门指南

    介绍jbmp开发环境的所需的工具,以及怎么部署和配置,涉及了JDK、Ant、Eclipse、mysql等。

    structs程序设计从入门到精通word文档

    3.8struts简单例子的分析(含代码注释和配置文件说明) 9 3.9本章小结 10 第4章 配置STRUTS组件 10 4.1 Web 应用部署描述符 10 4.2 STRUTS配置文件 10 4.3 应用资源文件 10 4.4 ANT的构建文件 10 4.5 struts中的日志...

    Jmeter 介绍和安装笔记

    Jmeter 介绍和安装笔记 Jmeter 介绍和安装笔记 Jmeter 介绍 JMeter 是apache 开源的性能测试工具。Jmeter 最初的想法是用来做web 自动化 测试,后面慢慢对功能做了一个扩展,扩展之后变成一...6、入门比较简单,上手快

    one-page-web-app-starter:使用 AngularJS、Bootstrap、Apache CXF、Hibernate 和 Guice 构建单页 Web 应用程序的“入门”项目

    在build文件夹中创建此文件构建发布 ant release将在release文件夹中创建一个 .zip 文件部署一个版本应用程序应该适用于任何现代 servlet 引擎。 部署步骤如下: 创建一个etc文件夹并将zip的/etc文件夹中的文件夹放...

    next-mobile-boilerplate:使用antd-mobile的下一个mobile样板,从开发到部署均提供全面支持

    下一个移动样板下一个使用ant-design-mobile移动样板,并提供从开发到部署的全面支持。产品特点ant-design-mobile作为移动用户界面。 express服务器定制。 使用lint-staged在pre-commit钩子中组合prettier和ESlint ...

    react-component-library:react + ts组件库高仿ant design

    Create React App入门 该项目是通过引导的。 可用脚本 在项目目录中,可以运行: yarn start 在开发模式下运行应用程序。 打开在浏览器中查看它。 如果您进行编辑,则页面将重新加载。 您还将在控制台中看到任何...

Global site tag (gtag.js) - Google Analytics