选择使用Apache ANT构建的特定环境

时间:2014-02-14 20:36:43

标签: java ant intellij-idea automated-deploy

这似乎是一个微不足道的问题,但我已经用Google搜索了大约1个小时而没有找到直接解决它的答案,所以这里有:

堆栈:

  • 爪哇
  • Tomcat7
  • MySQL的
  • OpenDS的

开发环境  IntelliJ IDEA(个人)   - 我们的一些开发人员更喜欢Eclipse

我有一个Java / Spring项目,我们部署到多个环境,我正在尝试创建一个构建过程供我们开发人员使用,这将允许我们从我们的工作站创建一个可部署的WAR文件。例如,我希望能够构建一个WAR,然后我可以通过ANT或手动部署到Servlet容器中:

  1. Sandbox - 将在具有本地Tomcat等的给定工作站上运行的构建
  2. DEV - 从我的工作站,构建一个可以发送给另一个团队以在托管DEV服务器上部署的WAR
  3. QA - 与DEV相同,替换变量明显不同,如引用的其他服务器名称,作为加密字符串传递的密码等。
  4. PROD - 与QA相同......
  5. 我希望能够做的是,无论是从命令行还是通过IntelliJ,指定我要为哪个环境打包WAR文件,然后运行它。然后拿下WAR并做我需要做的事情。

    同样,我知道这听起来微不足道,而且我缺少一些关于ANT的元素,但是你能提供的任何帮助都非常感激。

1 个答案:

答案 0 :(得分:0)

这是一个带有2个目标的骨架蚂蚁构建。初始化简单的回声到控制台你的类路径(用于调试)。 “make-war”任务构建了实际的战争档案。您需要更改位置以匹配您的设置。

<project name="Sample Build Script" default="init" basedir=".">

            <property environment="env" /> 
            <!-- ***** COMMAND LINE ARGUMENTS DEMOED HERE -->
            <property name="build_type" value= "${env.build_type}"/>
    <property name="version" value="${env.version}"/> 
            <!-- ***** END OF COMMAND LINE ARG **** -->                 

            <property name="src.dir" value="${basedir}/source"/> 
            <property name="build.classes.dir" value="${basedir}/classes"/>
            <property name="project.name" value="myproject"/>

               <target name="make-war" depends="compile-servlet">
                   <delete file="${build.classes.dir}/war/${project.name}.war"/>    
                   <war destfile="${build.classes.dir}/war/${project.name}.war" webxml="${src.dir}/WEB-INF/web.xml">    
                   <webinf dir="${src.dir}/WEB-INF" />    

                   <fileset dir="${src.dir}/html">    
                     <include name="*.html" />
                  </fileset>

                  <classes dir="${build.classes.dir}">    
                    <include name="/my/package/*.*"/>
                  </classes>   

                  <lib dir="/some/lib/loc">
                    <include name="some-lib.jar"/>
                       </lib>
                 </war>    
            </target>   

            <target name="init" > 
               <echo message="Using Source directory=${src.dir}" />  
               <echo message="Using  Build-Classes directory=${build.classes.dir}" />  
               <!-- **** VERIFY COMMAND LINE ARGS HERE ***** -->
               <echo message="Build Type=${build_type}" />  
               <echo message="Build Version =${version}" />  
               <!-- *** END VERIFY COMMAND LINE ARGUMENTS -->
            </target>
       </project>

我假设你已经编译了你的课程。您只想生成战争档案。我包含了html和lib元素作为参考。你可以随时评论它们。 希望有所帮助:)

更新: 我加入了COMMAND LINE VARIABLES。您将上述内容保存在名为build.xml的文件中。使用以下命令行运行该文件:

$> ant -Denv.build_type=PROD -Denv.version=2.01

将您的构建类型设置为“PROD”,将版本设置为“2.01”。这演示了如何在ANT BUILD FILE中使用命令行参数(根据您的详细说明)。

对于某人合并,命令行处理和“战争”目标,他们需要访问您的特定构建文件,构建要求,环境等。虽然术语“生产”是常见的。 “生产”的含义因项目而异。因此,所有人都能做的就是向您展示如何创建接受参数的ANT脚本。

希望有所帮助。