Ant 简介-下

简介: Ant 简介-下

Ant官方各标签参考手册


http://ant.apache.org/manual/


mail 标签发送邮件


需要预先下载 jar 包


javax.mail-api.jar | mail task with MIME encoding


https://javaee.github.io/javamail/


否则会报错


D:\Ant\AutoPackage\build.xml:144: java.lang.NoClassDefFoundError: com/sun/mail/util/FolderClosedIOException
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:264)
        at org.apache.tools.ant.taskdefs.email.EmailTask.execute(EmailTask.java:458)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:99)
        at org.apache.tools.ant.Task.perform(Task.java:350)
        at org.apache.tools.ant.Target.execute(Target.java:449)
        at org.apache.tools.ant.Target.performTasks(Target.java:470)
        at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1388)
        at org.apache.tools.ant.Project.executeTarget(Project.java:1361)
        at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
        at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
        at org.apache.tools.ant.Main.runBuild(Main.java:834)
        at org.apache.tools.ant.Main.startAnt(Main.java:223)
        at org.apache.tools.ant.launch.Launcher.run(Launcher.java:284)
        at org.apache.tools.ant.launch.Launcher.main(Launcher.java:101)
Caused by: java.lang.ClassNotFoundException: com.sun.mail.util.FolderClosedIOException
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 20 more


简单实例

<target name="mail">
    <mail mailhost="smtp.163.com" mailport="25" subject="Build successful" charset="utf-8" user="YOUR_EMAIL@163.com" password="YOUR PASSWORD">
      <from address="YOUR_EMAIL@163.com"/>
      <to address="1334598467@qq.com"/>
      <message>some international text</message>
    </mail>
  </target>


AntCall


利用AntCall Task实现target间调用时传递参数的实例  当需要从一个target传递参数到被调用的target时,可以使用<param> 类型进行传递。当然也可以在target中定义property来实现,与Java中的方法调用时传递参数相似

<target name="targetA">
    <!-- 通过property传递  -->
    <property name="prop" value="prop property" />
    <antcall target="targetB">
      <!-- 通过antcall设定param实现  -->
      <param name="path1" value="path1 param" />
    </antcall>
  </target>
  <target name="targetB" depends="init">
    <echo message="In targetB" />
    <echo message="path1=${path1}" />
    <echo message="prop=${prop}" />
  </target>


audio


Plays a sound file at the end of the build, according to whether the build failed or succeeded. You can specify either a specific sound file to play, or, if a directory is specified, the <sound> task will randomly select a file to play. Note: At this point, the random selection is based on all the files in the directory, not just those ending in appropriate suffixes for sound files, so be sure you only have sound files in the directory you specify.

<sound>
    <success source="${user.home}/sounds/bell.wav"/>
    <fail source="${user.home}/sounds/ohno.wav" loops="2"/>
  </sound>


注意: 在taget内<antcall target="playsound" />不生效不知为何

<!-- antcall调用没反应, depends却可以 -->
  <target name="playsound">
    <sound>
      <success source="audio/ring.wav"/>
    </sound>
  </target>


mail


<target name="mail">
    <mail mailhost="smtp.163.com" mailport="25" subject="Build successful" charset="utf-8" user="sbf15270837834@163.com" password="xxxxx">
      <from address="sbf15270837834@163.com" name="往事随风"/>
      <to address="1334598467@qq.com" name="飞翔的企鹅"/>
      <message>some international text</message>
      <!-- <attachments>
        <fileset dir="${outDir}">
          <include name="*.apk"/>
        </fileset>
      </attachments> -->
    </mail>
  </target>


ftp


<target name="ftp1" description="将 demo.apk上传到技术环境">
    <ftp server="10.1.61.123" remotedir="/opt/wasAppServer/profiles/AppSrv01/installedApps/test42Node01Cell/insure-pad_war.ear/demo.war/1" userid="root" password="abc@/1py">
      <fileset dir="C:/Users/hp/Desktop/demo_apk">
        <include name="android.keystore" />
      </fileset>
    </ftp>
  </target>


build 命令


-help, -h              print this message and exit
-projecthelp, -p       print project help information and exit
-version               print the version information and exit
-buildfile <file>      use given buildfile
  -file    <file>              ''
  -f       <file>              ''
-D<property>=<value>   use value for given property


  • 发现使用-projecthelp,命令 只有在project有内部标签 或者target有该属性 description 才会现在


load高级用法

<loadresource property="newApkName" encoding="UTF-8">
      <string value="${itemAppName}" />
      <filterchain>
        <tokenfilter>
          <!-- 巧妙将后缀.apk加上了时间 -->
          <replaceregex pattern="\.apk" replace="_aligned.apk" flags="g" />
        </tokenfilter>
      </filterchain>
    </loadresource>


参考


  • HttpClient 教程 (一) - loveyakamoz - 博客园


http://www.cnblogs.com/loveyakamoz/archive/2011/07/21/2112804.html


  • HttpClient使用详解 - 鹏霄万里展雄飞 - CSDN博客


https://blog.csdn.net/wangpeng047/article/details/19624529


  • 【ANT】Ant常用的内置task - 蓝天&白云 - 博客园


https://www.cnblogs.com/baicj/archive/2015/12/21/5063608.html

目录
相关文章
elasticsearch hanlp 插件安装操作
简要简述elasticsearch hanlp插件的基本安装操作
elasticsearch hanlp 插件安装操作
|
搜索推荐 Java 应用服务中间件
【Maven】IDEA部署配置Maven项目教程,IDEA配置Tomcat(2019.3.3)(2023.1.3)
当涉及到软件开发和项目管理时,使用一个可靠的构建工具是非常重要的。Maven是一个广泛使用的构建工具,它为Java项目提供了一种简化的构建过程和依赖管理。 在本文中,我们将探讨如何部署Maven并开始使用它来构建您的项目。我们将介绍所需的步骤,并向您提供一些有用的提示和建议。
【Maven】IDEA部署配置Maven项目教程,IDEA配置Tomcat(2019.3.3)(2023.1.3)
|
3月前
|
人工智能 关系型数据库 Serverless
方案实践 | Supabase +Qcoder一站式构建云上应用
基于阿里云PolarDB Supabase、Qoder与函数计算,一站式构建轻量级AI应用与SaaS平台,支持MVP快速验证,实现开发、部署、调试闭环,显著提升敏捷交付效率。
|
12月前
|
安全 Linux Android开发
如何将Kindle电子书下载到电脑:技术流程与操作解析
随着数字阅读兴起,Kindle成为主流电子书平台。然而,Amazon的封闭生态和DRM限制,使用户难以灵活管理书籍。本文从技术角度出发,讲解如何合法下载Kindle电子书至电脑,包括使用Kindle for PC、USB导出及进阶方案(如Android模拟器、WINE环境)。同时介绍文件格式处理、自动化备份与阅读体验优化方法,并强调版权合规的重要性,助您构建个人数字图书馆。
4473 3
|
SQL 数据可视化 关系型数据库
Quick BI 测评报告
Quick BI是阿里云推出的零代码可视化分析工具,适合个人开发者与小微团队使用。其核心优势在于轻量化启动(免费试用+按量付费)、多源接入(MySQL、MongoDB等)及敏捷分析能力(拖拽式仪表板)。实测显示,它支持智能CSV解析、语法高亮SQL编辑器和25+基础图表类型,具备图表联动交互功能。尽管缺少3D地图和自定义JS插件支持,但凭借低学习成本、OpenAPI扩展性以及移动端报表查看功能,Quick BI在个人项目展示、团队协作和轻量级数据分析中表现出色。不过,复杂计算需依赖SQL,移动端编辑和PDF导出存在局限性。
999 3
|
人工智能 搜索推荐 Ubuntu
[AI Perplexica] 安装指南:轻松部署AI驱动的开源搜索引擎
详细讲解如何在本地环境中使用Docker部署AI驱动的开源搜索引擎Perplexica,让您快速上手体验其强大功能。
1111 3
[AI Perplexica] 安装指南:轻松部署AI驱动的开源搜索引擎
|
存储 数据采集 安全
一文深入了解RFID与条码技术的差异
RFID与条码技术都是用于物体信息识别的重要手段,但两者在工作原理、数据存储、读取方式、速度、耐用性、成本及安全性等方面存在显著差异。条码依赖光学扫描,成本低但易受环境影响,数据量有限;RFID通过射频信号传输,具备更大存储容量、非接触式读取、快速多标签处理能力以及更高安全性,适合复杂环境。根据实际需求选择合适技术,二者均为物联网时代物品识别的关键工具。
|
机器学习/深度学习 人工智能 算法
【AI系统】AI系统架构的组成
本文概述了AI系统的组成,从AI训练与推理框架、AI编译与计算架构到AI硬件与体系结构,详细介绍了各层的功能与技术细节。同时,探讨了AI系统生态的广泛领域,包括核心系统软硬件、AI算法和框架以及更广泛的生态组成部分,强调了在模型训练、推理、安全与隐私等方面的技术挑战与解决方案。
3611 2
|
数据建模 Java 开发工具
Android bugreport的使用
Android bugreport的使用
1386 0
|
存储 机器学习/深度学习 人工智能
神经网络推理加速入门——计算和存储的分离
硬件优化对于计算的加速效果是显而易见的,理解了底层硬件的原理,可以帮助我们更好的完成计算优化。
神经网络推理加速入门——计算和存储的分离