Ant自动化构建项目

简介: 1 普通java项目<?xml version="1.0" encoding="UTF-8"?><project default="ftp">    <property name="src.dir" location="src"></property>    <property name="test.src.dir" locat

1 普通java项目



<?xml version="1.0" encoding="UTF-8"?>
<project default="ftp">
    <property name="src.dir" location="src"></property>
    <property name="test.src.dir" location="test"></property>
    <property name="lib.dir" location="lib"></property>
    <property file="build.properties"></property>
    
    <property name="build.dir" location="build"></property>
    <property name="build.classes" location="${build.dir}/classes"></property>
    <property name="build.test.dir" location="${build.dir}/test"></property>
    <property name="build.test.classes" location="${build.test.dir}/classes"></property>
    <property name="build.test.report" location="${build.test.dir}/report"></property>
    <property name="build.jar.dir" location="${build.dir}/dist"></property>
    <property name="build.zip.dir" location="${build.dir}/zip"></property>
    <property name="build.doc.dir" location="${build.dir}/doc"></property>
    <property name="build.src" location="${build.dir}/src"></property>
    <property name="metadata.dir" location="metadata"/>
    
    <path id="compile-classpath">
        <fileset dir="${lib.dir}" includes="*.jar"></fileset>
    </path>
    
    <path id="compile-test-classpath">
        <path refid="compile-classpath"></path>
        <pathelement location="${build.classes}"/>
    </path>
    
    <path id="run-test-classpath">
        <path refid="compile-test-classpath"/>
        <pathelement location="${build.test.classes}"/>
    </path>
    
    <target name="clean">
        <delete dir="${build.dir}"/>
    </target>
    
    <target name="init" depends="clean,metadata">
        <mkdir dir="${build.dir}"/>
        <mkdir dir="${build.classes}"/>
        <mkdir dir="${build.test.dir}"/>
        <mkdir dir="${build.test.classes}"/>
        <mkdir dir="${build.test.report}"/>
        <mkdir dir="${build.jar.dir}"/>
        <mkdir dir="${build.zip.dir}"/>
        <mkdir dir="${build.doc.dir}"/>
        <mkdir dir="${build.src}"/>
        <mkdir dir="${metadata.dir}"/>
    </target>
    
    <target name="compile" depends="init">
        <javac destdir="${build.classes}" srcdir="${src.dir}" 
            classpathref="compile-classpath" 
               includeantruntime="true" failonerror="true"></javac>
        <copy todir="${build.classes}">
            <fileset dir="${src.dir}" includes="**/*.*" excludes="**/*.java"></fileset>
        </copy>
    </target>
    
    <target name="compile-test" depends="compile">
        <javac destdir="${build.test.classes}" srcdir="${test.src.dir}"
               includeantruntime="true" failonerror="true" 
               classpathref="compile-test-classpath"></javac>
    </target>
    
    <target name="run-test" depends="compile-test">
        <junit fork="true" haltonfailure="false" failureproperty="junit.fail">
            <classpath refid="run-test-classpath"></classpath>
            <formatter type="brief" usefile="false"/>
            <formatter type="xml"/>
            <batchtest todir="${build.test.report}">
                <fileset dir="${build.test.classes}" includes="${run.test.class}"></fileset>
            </batchtest>
        </junit>
        <junitreport todir="${build.test.report}">
            <fileset dir="${build.test.report}" includes="TEST-*.xml"></fileset>
            <report format="frames" todir="${build.test.report}/html"/>
        </junitreport>
        <fail if="${junit.fail}" message="单元测试失败,具体情况请查询${build.test.report}"/>
    </target>
    
    <target name="doc" depends="run-test">
        <javadoc sourcepath="${src.dir}" use="true" packagenames="cn.*" 
               charset="UTF-8" encoding="UTF-8" docencoding="UTF-8"
               destdir="${build.doc.dir}">
            <classpath refid="compile-classpath"></classpath>
        </javadoc>
    </target>
    
    <target name="jar" depends="doc">
        <tstamp>
            <format property="now" pattern="yyyy=MM-dd HH:mm:ss"/>
        </tstamp>
        <jar destfile="${build.jar.dir}/${project.jar.name}" 
                basedir="${build.classes}" duplicate="preserve">
            <manifest>
                <attribute name="Build-By" value="${user.name}"/>
                <attribute name="Build-time" value="${now}"/>
            </manifest>
        </jar>        
    </target>
    
    <target name="copy-src" depends="jar">
        <copy todir="${build.src}">
            <fileset dir="${src.dir}" includes="**/*.*"></fileset>
        </copy>
    </target>
    
    
    <target name="metadata">
        <mkdir dir="${metadata.dir}"/>
        <buildnumber/>
        <propertyfile file="${metadata.dir}/build.propterties">
            <entry key="Build-time" type="date" value="now" pattern="yyyy-MM-dd HH:mm:ss"/>
            <entry key="build-number" type="int" value="${build.number}"/>
        </propertyfile>
    </target>
    
    <target name="zip" depends="copy-src">
        <zip destfile="${build.zip.dir}/${project.zip.name}" duplicate="preserve">
            <zipfileset file="${build.jar.dir}/${project.jar.name}" prefix="${project.prefix}"/>
            <zipfileset dir="${build.src}" includes="**/*.*" prefix="${project.prefix}/src"></zipfileset>
            <zipfileset dir="${build.doc.dir}" includes="**/*.*" prefix="${project.prefix}/doc/api"></zipfileset>
            <zipfileset dir="${build.test.dir}" includes="**/*.*" 
                    excludes="report/*.*" prefix="${project.prefix}/test"></zipfileset>
            <zipfileset dir="." includes="build.xml,build.properties" prefix="${project.prefix}"></zipfileset>
        </zip>
    </target>
    
    <presetdef name="upload">
        <ftp userid="${ftp.username}" password="${ftp.password}" 
             server="${ftp.server}" remotedir="${ftp.dir}"></ftp>
    </presetdef>
    
    <target name="ftp" depends="zip">
        <upload action="mkdir"/>
        <upload action="put">
            <fileset dir="${build.zip.dir}" includes="${project.zip.name}"></fileset>
            </upload>
    </target>
    
</project>



build.properties

ftp.username = kh
ftp.password = 123
ftp.server = localhost
ftp.dir = user_manager
project.version = SNAPSHOT-0.1
project.prefix = usermanager-${project.version}
project.jar.name = ${project.prefix}.jar
project.zip.name = ${project.prefix}.zip
run.test.class = **/Test*.class


2 web项目

<?xml version="1.0" encoding="UTF-8"?>
<project>
    <property name="src.dir" location="src"></property>
    <property name="build.dir" location="build"></property>
    <property name="build.classes" location="${build.dir}/classes"></property>
    <property name="build.war" location="${build.dir}/war"></property>
    
    <property name="web.name" value="hello"></property>
    <property name="web.root" value="WebContent"></property>
    <property name="web.WEB-INF" location="${web.root}/WEB-INF"></property>
    <property name="web.lib" location="${web.WEB-INF}/lib"></property>
    <property environment="env"></property>
    
    <path id="compile">
        <fileset dir="${web.lib}" includes="*.jar"></fileset>
        <fileset dir="${env.CATALINA_HOME}/lib" includes="*.jar"></fileset>
    </path>
    
    <target name="init">
        <delete dir="${build.dir}"></delete>
        <mkdir dir="${build.dir}"/>
        <mkdir dir="${build.classes}"/>
        <mkdir dir="${build.war}"/>
    </target>
    
    <target name="compile" depends="init">
        <javac destdir="${build.classes}" srcdir="${src.dir}" classpathref="compile"></javac>
    </target>
    
    <target name="war" depends="compile">
        <war destfile="${build.war}/${web.name}.war">
            <fileset dir="${web.root}" includes="**/*.*"></fileset>
            <lib dir="${web.lib}"></lib>
            <webinf dir="${web.WEB-INF}"></webinf>
            <classes dir="${build.classes}"></classes>
        </war>
    </target>
    
    <presetdef name="sql-admin">
        <sql userid="root" password="123456" url="jdbc:mysql://localhost:3306/itat_msg?useUnicode=true&amp;characterEncoding=utf-8" driver="com.mysql.jdbc.Driver">
            <classpath refid="compile"></classpath>
        </sql>
    </presetdef>
    
    <target name="init-mysql">
        <sql-admin>
            <transaction>
                drop database ant_test;
                create database ant_test;
                GRANT ALL ON ant_test.* TO "ant_test"@"localhost" IDENTIFIED BY '123'
            </transaction>
        </sql-admin>
    </target>
    
    <target name="deploy" depends="war">
        <copy todir="${env.CATALINA_HOME}/webapps">
            <fileset dir="${build.war}" includes="${web.name}.war"></fileset>
        </copy>
    </target>
</project>


本文出自 “点滴积累” 博客,请务必保留此出处http://tianxingzhe.blog.51cto.com/3390077/1751564

目录
相关文章
|
28天前
|
存储 运维 安全
构建高效自动化运维体系:Ansible与Docker的完美结合
【2月更文挑战第31天】 随着云计算和微服务架构的兴起,自动化运维成为保障系统稳定性和提升部署效率的关键手段。本文将详细探讨如何通过Ansible和Docker的结合来构建一个高效、可靠且易于管理的自动化运维体系。首先,介绍自动化运维的必要性及其在现代IT基础设施中的作用;然后,分别阐述Ansible和Docker的技术特点及优势;最后,提供一个基于Ansible和Docker结合使用的实践案例,以及实施过程中遇到的挑战和解决方案。
|
29天前
|
运维 Prometheus 监控
构建高效自动化运维系统的关键策略
【2月更文挑战第30天】随着云计算和微服务架构的兴起,现代IT运维环境变得愈加复杂多变。为保持业务连续性、提高响应速度并降低成本,企业亟需构建一个高效的自动化运维系统。本文将深入探讨自动化运维系统构建过程中的关键策略,包括工具和技术选型、流程优化、监控与告警体系搭建以及持续集成/持续部署(CI/CD)实践,旨在为读者提供一个清晰的构建蓝图和实用的实施建议。
|
29天前
|
运维 Kubernetes 监控
构建高效自动化运维体系:基于Docker和Kubernetes的实践指南
【2月更文挑战第30天】 在当今快速发展的云计算时代,传统的IT运维模式已难以满足业务的敏捷性和稳定性需求。本文深入探讨了如何通过Docker容器化技术和Kubernetes集群管理工具构建一个高效、可靠的自动化运维体系。文章首先概述了容器化技术和微服务架构的基本概念,随后详细阐述了基于Docker的应用打包、部署流程,以及Kubernetes在自动化部署、扩展和管理容器化应用中的关键作用。最后,文中通过案例分析,展示了如何在实际场景中利用这些技术优化运维流程,提高系统的整体效率和可靠性。
|
29天前
|
运维 安全 网络安全
构建高效自动化运维体系:Ansible与Docker的完美融合
【2月更文挑战第30天】在当今快速迭代和持续部署的软件发展环境中,自动化运维成为确保效率和稳定性的关键。本文将探讨如何通过结合Ansible和Docker技术,构建一个高效的自动化运维体系。我们将分析Ansible的配置管理功能和Docker容器化的优势,并展示它们如何协同工作以简化部署流程,增强应用的可移植性,并提供一致性的系统环境。此外,文章还将介绍一些最佳实践,帮助读者在真实环境中实现这一整合方案。
|
1月前
|
前端开发 JavaScript jenkins
构建高效前端项目:从模块化到自动化
【2月更文挑战第13天】 随着Web技术的不断进步,前端项目的复杂性日益增加。为了确保可维护性和性能,前端工程师必须采用模块化和自动化的策略来优化开发流程。本文将探讨如何使用现代前端工具和最佳实践来构建一个高效的前端项目架构,包括模块打包、代码分割和持续集成等方面。
|
25天前
|
运维 监控 安全
构建高效自动化运维体系的五大关键步骤
在当今快速发展的IT环境中,自动化已经成为提高运维效率、减少人为错误和响应快速变化的关键。本文将深入探讨构建一个高效自动化运维体系的核心步骤,包括工具选择、流程设计、系统集成、安全策略以及持续改进。通过这些步骤,企业可以确保其运维团队能够更加高效地管理日常任务,同时保持系统的稳定性和安全性。
|
26天前
|
运维 监控 持续交付
构建高效自动化运维体系:策略与实践
在数字化时代,企业IT基础设施的管理和维护变得日益复杂。为了提高效率、降低错误率并快速响应市场变化,构建一个高效的自动化运维体系至关重要。本文将探讨自动化运维的核心策略,并通过实际案例分析展示如何将这些策略应用于日常管理中,以实现IT运维的优化。
15 0
|
29天前
|
人工智能 运维 监控
构建高性能微服务架构:现代后端开发的挑战与策略构建高效自动化运维系统的关键策略
【2月更文挑战第30天】 随着企业应用的复杂性增加,传统的单体应用架构已经难以满足快速迭代和高可用性的需求。微服务架构作为解决方案,以其服务的细粒度、独立性和弹性而受到青睐。本文将深入探讨如何构建一个高性能的微服务系统,包括关键的设计原则、常用的技术栈选择以及性能优化的最佳实践。我们将分析微服务在处理分布式事务、数据一致性以及服务发现等方面的挑战,并提出相应的解决策略。通过实例分析和案例研究,我们的目标是为后端开发人员提供一套实用的指南,帮助他们构建出既能快速响应市场变化,又能保持高效率和稳定性的微服务系统。 【2月更文挑战第30天】随着信息技术的飞速发展,企业对于信息系统的稳定性和效率要求
|
4天前
|
运维 Kubernetes Devops
构建高效自动化运维体系:DevOps与容器技术融合实践
【4月更文挑战第15天】 在当今快速发展的信息技术时代,传统的IT运维模式已难以满足业务敏捷性的需求。本文旨在探讨如何通过整合DevOps理念和容器技术来构建一个高效的自动化运维体系。文章将详细阐述DevOps的核心原则、容器技术的基础知识,以及两者结合的优势。此外,文中还将分享一系列实践经验,包括持续集成/持续部署(CI/CD)流程的搭建、微服务架构的应用,以及监控和日志管理策略的优化,以期帮助企业实现快速、可靠且安全的软件交付过程。
|
9天前
|
机器学习/深度学习 存储 运维
构建高效自动化运维体系的五大策略
【4月更文挑战第10天】在数字化转型的浪潮中,企业IT基础设施的复杂性与日俱增,传统的手动运维模式已难以满足快速响应和高效率的需求。本文将探讨构建一个高效自动化运维体系的五大策略,包括监控与告警的智能化、配置管理自动化、故障自愈能力的提升、日志管理的优化以及持续集成和部署(CI/CD)的实践。这些策略将帮助企业减轻运维负担,提高系统稳定性和业务敏捷性。

热门文章

最新文章