0

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

堆:

  • 爪哇
  • 雄猫7
  • MySQL
  • 开放式

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

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

  1. 沙盒 - 将在给定工作站上运行的构建,带有本地 Tomcat 等。
  2. DEV - 从我的工作站构建一个 WAR,该 WAR 可以发送到另一个团队以部署在托管的 DEV 服务器上
  3. QA - 与 DEV 相同,但替换变量(如引用的其他服务器名称、作为加密字符串传递的密码等)存在明显差异。
  4. 产品 - 与 QA 相同...

我希望能够做的是,无论是从命令行还是通过 IntelliJ,指定我要为其打包 WAR 文件并运行它的环境。然后拿起战争,做我需要做的事情。

同样,我知道这听起来微不足道,并且我缺少关于 ANT 的一些非常基本的东西,但是非常感谢您提供的任何帮助。

4

1 回答 1

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 元素作为参考。您可以随时将它们注释掉。希望有帮助:)

更新:我添加到命令行变量。您将上述内容保存在名为 build.xml 的文件中。您可以使用以下命令行运行该文件:

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

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

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

希望有帮助。

于 2014-02-14T20:55:06.473 回答