2011-06-13 185 views
14

如何将ant脚本转换为gradle脚本? 嗨, 你能帮我把蚂蚁脚本转换成gradle脚本。我是Gradle的新用户。将ant脚本转换为gradle脚本

<property name="pm-dir"    value="${PM-DIR}/${BUILD_NUM}" /> 
<property name="leis-dir"    value="${LEIS_DIR}/${BUILD_NUM}" /> 

<property name="proxy-name"    value="${PROXY_JAR_NAME}"/> 
<property name="proxy-client-name"  value="${PROXY_CLIENT_JAR_NAME}"/> 

<property environment="env"/> 
<property name="java-home"    value="${env.JAVA_HOME}"/> 

    <condition property="build-pm"> 
    <equals arg1="True" arg2="${BUILD_PM}" /> 
</condition> 

<condition property="build-LEIS"> 
    <equals arg1="True" arg2="${BUILD_LEIS}" /> 
</condition> 


<target name="build-LEIS-components" if="build-LEIS"> 

    <ant antfile="build.xml" 
     target="clean" 
     dir="${leis-dir}/LEIS" 
     inheritAll="false"/> 
    <ant antfile="build.xml" 
     target="ejbdoclet" 
     dir="${leis-dir}/LEIS/BusinessServices" 
     inheritAll="false"/> 
    <ant antfile="build.xml" 
     target="jar" 
     dir="${leis-dir}/LEIS" 
     inheritAll="false"/> 

    <ant antfile="build.xml" 
     target="clean" 
     dir="${leis-dir}/ETS/trunk/Entitlements" 
     inheritAll="false"/> 
    <ant antfile="build.xml" 
     target="build" 
     dir="${leis-dir}/ETS/trunk/Entitlements" 
     inheritAll="false"/> 

    <mkdir dir="${leis-dir}/JARS/APP-INF/lib/"/> 

    <jar jarfile="${leis-dir}/JARS/APP-INF/lib/LEISConfig.jar"> 
     <fileset dir="LEIS/" includes="datetime.properties"/> 
     <fileset dir="LEIS/" includes="log4j.properties"/> 
     <manifest> 
      <attribute name="Built-By" value="${user.name}"/> 
     </manifest> 
    </jar> 
</target> 


<!--======================================================================== 
Builds pm using the supplied RE build files, modified by us. 
========================================================================--> 
<target name="build-pm" if="build-pm"> 




    <!-- SPPResourceBundle Overrides --> 
    <mkdir dir="${pm-dir}/pm2/deploy/propertyoverrides"/> 
    <copy todir="${pm-dir}/pm2/deploy/propertyoverrides" overwrite="true"> 
     <fileset dir="olwpmconfig/propertyoverrides"/> 
    </copy> 

    <!-- copy build.properties into pm dir, complete with kodo key --> 
    <copy file="olwpmconfig/build.properties"  todir="${pm-dir}/pm2/"   overwrite="true"> 
     <filterchain>   
       <replacetokens> 
        <token key="LOGGINGFLOOR" value="${PERFORMANCE_LOGGING_FLOOR}"/> 
        <token key="BEADIR" value="${BEA_HOME}"/> 
       </replacetokens> 
     </filterchain> 
    </copy> 

    <!--the actual Retail Express build scripts to create the pm-main.ear--> 
    <echo message="Calling pm Build Script"/> 
    <ant antfile='${pm-dir}/pm2/build/build.xml'   target='clean-build' inheritAll="false"/> 

    <!--delete the extra copy of jdo.dtd--> 
    <delete file="jdo.dtd" /> 

    <fileset id="required-pm-client-libs" dir="${pm-dir}/pm2/deploy/lib"> 
     <include name="*.jar"/> 
     <include name="client/*.jar"/> 
     <exclude name="*tests.jar"/> 
    </fileset> 

    <!-- Used to populate value of MANIFEST.MF Class-path attribute. Turns our set of "required" libs 
    into a nice space separated string to place in the MANIFEST.MF. Property is used in the "dist" 
    task's jar command. --> 
    <pathconvert property="client-classpath" 
       refid="required-pm-client-libs" 
       pathsep=" " 
       dirsep="/"> 
     <map from="${pm-dir}/pm2/deploy/lib/" to=""/> 
    </pathconvert> 

    <jar update="true" jarfile="${pm-dir}/pm2/deploy/lib/pm-core.jar"> 
     <manifest> 
      <attribute name="Class-Path" value="${client-classpath}"/> 
      <attribute name="Main-Class" value="com.retailexp.pm.ui.util.SPPClientStartUp"/> 
     </manifest> 
    </jar> 

    <!-- Creates a file Marimba/BigFix/WhatEver can use to track the version of pm installed on a machine --> 
    <echo message="${pm_MAJOR_VERSION}.${BUILD_NUM}" file="${pm-dir}/pm2/deploy/lib/version.txt" append="false"/> 

    <!-- Remove files we place on classpath from ears, Mantis 10624 --> 
    <!-- pm --> 
    <move file="${pm-dir}/pm2/deploy/dist/pm-main.ear" tofile="${pm-dir}/pm2/deploy/dist/old-pm-main.ear"/> 
    <unzip src="${pm-dir}/pm2/deploy/dist/old-pm-main.ear" dest="${pm-dir}/pm2/deploy/dist/"> 
     <patternset> 
      <include name="lib/pm-server-conf.jar"/> 
     </patternset> 
    </unzip> 
    <move file="${pm-dir}/pm2/deploy/dist/lib/pm-server-conf.jar" tofile="${pm-dir}/pm2/deploy/dist/lib/old-pm-server-conf.jar"/> 
    <zip file="${pm-dir}/pm2/deploy/dist/lib/pm-server-conf.jar"> 
     <zipfileset src="${pm-dir}/pm2/deploy/dist/lib/old-pm-server-conf.jar"> 
      <exclude name="log4j.properties"/> 
      <exclude name="ehcache-transactional.xml"/> 
     </zipfileset> 
    </zip> 
    <zip file="${pm-dir}/pm2/deploy/dist/pm-main.ear"> 
     <zipfileset src="${pm-dir}/pm2/deploy/dist/old-pm-main.ear"> 
      <exclude name="lib/pm-server-conf.jar"/> 
     </zipfileset> 
     <zipfileset dir="${pm-dir}/pm2/deploy/dist/lib/" includes="pm-server-conf.jar" fullpath="lib/pm-server-conf.jar"/> 
    </zip> 
    <!-- EDM --> 
    <move file="${pm-dir}/pm2/deploy/dist/pm-edm.ear" tofile="${pm-dir}/pm2/deploy/dist/old-pm-edm.ear"/> 
    <unzip src="${pm-dir}/pm2/deploy/dist/old-pm-edm.ear" dest="${pm-dir}/pm2/deploy/dist/"> 
     <patternset> 
      <include name="lib/pm-server-conf.jar"/> 
     </patternset> 
    </unzip> 
    <move file="${pm-dir}/pm2/deploy/dist/lib/pm-server-conf.jar" tofile="${pm-dir}/pm2/deploy/dist/lib/old-pm-server-conf.jar"/> 
    <zip file="${pm-dir}/pm2/deploy/dist/lib/pm-server-conf.jar"> 
     <zipfileset src="${pm-dir}/pm2/deploy/dist/lib/old-pm-server-conf.jar"> 
      <exclude name="log4j.properties"/> 
     </zipfileset> 
    </zip> 
    <zip file="${pm-dir}/pm2/deploy/dist/pm-edm.ear"> 
     <zipfileset src="${pm-dir}/pm2/deploy/dist/old-pm-edm.ear"> 
      <exclude name="lib/pm-server-conf.jar"/> 
     </zipfileset> 
     <zipfileset dir="${pm-dir}/pm2/deploy/dist/lib/" includes="pm-server-conf.jar" fullpath="lib/pm-server-conf.jar"/> 
    </zip> 
</target> 

<!--======================================================================== 
Builds LEIS 
========================================================================--> 
<target name="build-proxy" if="build-LEIS"> 

    <!--copy deploy.properties with the proper jar names and locations--> 
    <copy file="LEIS/deploy.properties"  todir="${leis-dir}/proxy/config/build/" overwrite="true"> 
     <filterchain> 
       <replacetokens> 
        <token key="pmCORE"   value="${pm_CORE_NAME}"/> 
        <token key="pmTRANSFER"  value="${pm_TRANSFER_NAME}"/> 
        <token key="PROXYJARNAME"  value="${PROXY_JAR_NAME}"/> 
        <token key="PROXYCLIENTJARNAME" value="${PROXY_CLIENT_JAR_NAME}"/> 
        <token key="PROXYLIBSDIR"  value="${leis-dir}/JARS/"/> 
       </replacetokens> 
     </filterchain> 
    </copy> 

    <ant antfile="build.xml" target="clean" dir="${leis-dir}/proxy" inheritAll="false" /> 
    <ant antfile="build.xml" target="prod-dist" dir="${leis-dir}/proxy" inheritAll="false"> 
     <property name="build.name" value="${pm_MAJOR_VERSION}.${BUILD_NUM}"/> 
    </ant> 

    <ear destfile="${ear-name}" appxml="LEIS/application.xml"> 
     <metainf dir="${leis-dir}/LEIS/conf/EAR/META-INF" includes="weblogic-application.xml"/> 
     <fileset dir="${leis-dir}/JARS/"     includes="*.jar"/> 
     <fileset dir="${leis-dir}/JARS/"     includes="APP-INF/**" excludes="APP-INF/lib/wlfullclient.jar"/> 
    </ear> 

    <!-- Place the proxy-client jar in the pm ear--> 
    <zip update="true" destfile="${pm-dir}/pm2/deploy/dist/pm-main.ear"> 
     <zipfileset dir="${leis-dir}/proxy/dist/" includes="${proxy-client-name}" fullpath="APP-INF/lib/${proxy-client-name}"/> 
    </zip> 

</target> 

<target name="build-cpc"> 
    <copy file="${pm-dir}/pm2/deploy/lib/${pm_TRANSFER_NAME}" todir="${leis-dir}/cpc-web-app/webapp/lib/cpc"/> 
    <ant antfile="build.xml" target="build-all-environments" dir="${leis-dir}/cpc-web-app/webapp" inheritAll="false"/> 
</target> 

<target name="build-all"> 
    <antcall target="build-LEIS-components"/> 
    <antcall target="build-pm"/> 
    <antcall target="build-proxy"/> 
    <antcall target="build-cpc"/> 
</target> </condition> 

<condition property="build-LEIS"> 
    <equals arg1="True" arg2="${BUILD_LEIS}" /> 
</condition> 


<target name="build-LEIS-components" if="build-LEIS"> 

    <!--Go through and build the LEIS modules--> 
    <ant antfile="build.xml" 
     target="clean" 
     dir="${leis-dir}/LEIS" 
     inheritAll="false"/> 
    <ant antfile="build.xml" 
     target="ejbdoclet" 
     dir="${leis-dir}/LEIS/BusinessServices" 
     inheritAll="false"/> 
    <ant antfile="build.xml" 
     target="jar" 
     dir="${leis-dir}/LEIS" 
     inheritAll="false"/> 



    <ant antfile="build.xml" 
     target="clean" 
     dir="${leis-dir}/ETS/trunk/Entitlements" 
     inheritAll="false"/> 
    <ant antfile="build.xml" 
     target="build" 
     dir="${leis-dir}/ETS/trunk/Entitlements" 
     inheritAll="false"/> 


    <mkdir dir="${leis-dir}/JARS/APP-INF/lib/"/> 


    <jar jarfile="${leis-dir}/JARS/APP-INF/lib/LEISConfig.jar"> 
     <fileset dir="LEIS/" includes="datetime.properties"/> 
     <fileset dir="LEIS/" includes="log4j.properties"/> 
     <manifest> 
      <attribute name="Built-By" value="${user.name}"/> 
     </manifest> 
    </jar> 
</target> 


<target name="build-pm" if="build-pm"> 



    <mkdir dir="${pm-dir}/amp2/deploy/propertyoverrides"/> 
    <copy todir="${pm-dir}/amp2/deploy/propertyoverrides" overwrite="true"> 
     <fileset dir="olwAMPconfig/propertyoverrides"/> 
    </copy> 

    <ant antfile='${pm-dir}/amp2/build/build.xml'   target='clean-build' inheritAll="false"/> 

    <!--delete the extra copy of jdo.dtd--> 
    <delete file="jdo.dtd" /> 

    <fileset id="required-amp-client-libs" dir="${pm-dir}/amp2/deploy/lib"> 
     <include name="*.jar"/> 
     <include name="client/*.jar"/> 
     <exclude name="*tests.jar"/> 
    </fileset> 

    <!-- Used to populate value of MANIFEST.MF Class-path attribute. Turns our set of "required" libs 
    into a nice space separated string to place in the MANIFEST.MF. Property is used in the "dist" 
    task's jar command. --> 
    <pathconvert property="client-classpath" 
       refid="required-amp-client-libs" 
       pathsep=" " 
       dirsep="/"> 
     <map from="${pm-dir}/amp2/deploy/lib/" to=""/> 
    </pathconvert> 

    <jar update="true" jarfile="${pm-dir}/amp2/deploy/lib/amp-core.jar"> 
     <manifest> 
      <attribute name="Class-Path" value="${client-classpath}"/> 
      <attribute name="Main-Class" value="com.retailexp.amp.ui.util.SPPClientStartUp"/> 
     </manifest> 
    </jar> 

    <!-- Creates a file Marimba/BigFix/WhatEver can use to track the version of AMP installed on a machine --> 
    <echo message="${AMP_MAJOR_VERSION}.${BUILD_NUM}" file="${pm-dir}/amp2/deploy/lib/version.txt" append="false"/> 

    <!-- Remove files we place on classpath from ears, Mantis 10624 --> 
    <!-- AMP --> 
    <move file="${pm-dir}/amp2/deploy/dist/amp-main.ear" tofile="${pm-dir}/amp2/deploy/dist/old-amp-main.ear"/> 
    <unzip src="${pm-dir}/amp2/deploy/dist/old-amp-main.ear" dest="${pm-dir}/amp2/deploy/dist/"> 
     <patternset> 
      <include name="lib/amp-server-conf.jar"/> 
     </patternset> 
    </unzip> 
    <move file="${pm-dir}/amp2/deploy/dist/lib/amp-server-conf.jar" tofile="${pm-dir}/amp2/deploy/dist/lib/old-amp-server-conf.jar"/> 
    <zip file="${pm-dir}/amp2/deploy/dist/lib/amp-server-conf.jar"> 
     <zipfileset src="${pm-dir}/amp2/deploy/dist/lib/old-amp-server-conf.jar"> 
      <exclude name="log4j.properties"/> 
      <exclude name="ehcache-transactional.xml"/> 
     </zipfileset> 
    </zip> 
    <zip file="${pm-dir}/amp2/deploy/dist/amp-main.ear"> 
     <zipfileset src="${pm-dir}/amp2/deploy/dist/old-amp-main.ear"> 
      <exclude name="lib/amp-server-conf.jar"/> 
     </zipfileset> 
     <zipfileset dir="${pm-dir}/amp2/deploy/dist/lib/" includes="amp-server-conf.jar" fullpath="lib/amp-server-conf.jar"/> 
    </zip> 
    <!-- EDM --> 
    <move file="${pm-dir}/amp2/deploy/dist/amp-edm.ear" tofile="${pm-dir}/amp2/deploy/dist/old-amp-edm.ear"/> 
    <unzip src="${pm-dir}/amp2/deploy/dist/old-amp-edm.ear" dest="${pm-dir}/amp2/deploy/dist/"> 
     <patternset> 
      <include name="lib/amp-server-conf.jar"/> 
     </patternset> 
    </unzip> 
    <move file="${pm-dir}/amp2/deploy/dist/lib/amp-server-conf.jar" tofile="${pm-dir}/amp2/deploy/dist/lib/old-amp-server-conf.jar"/> 
    <zip file="${pm-dir}/amp2/deploy/dist/lib/amp-server-conf.jar"> 
     <zipfileset src="${pm-dir}/amp2/deploy/dist/lib/old-amp-server-conf.jar"> 
      <exclude name="log4j.properties"/> 
     </zipfileset> 
    </zip> 
    <zip file="${pm-dir}/amp2/deploy/dist/amp-edm.ear"> 
     <zipfileset src="${pm-dir}/amp2/deploy/dist/old-amp-edm.ear"> 
      <exclude name="lib/amp-server-conf.jar"/> 
     </zipfileset> 
     <zipfileset dir="${pm-dir}/amp2/deploy/dist/lib/" includes="amp-server-conf.jar" fullpath="lib/amp-server-conf.jar"/> 
    </zip> 
</target> 

<!--=============== Builds LEIS ========================================================================--> 
<target name="build-proxy" if="build-LEIS"> 


    <ant antfile="build.xml" target="clean" dir="${leis-dir}/proxy" inheritAll="false" /> 
    <ant antfile="build.xml" target="prod-dist" dir="${leis-dir}/proxy" inheritAll="false"> 
     <property name="build.name" value="${AMP_MAJOR_VERSION}.${BUILD_NUM}"/> 
    </ant> 

    <!--copy the proxy jar to the LEIS jars library--> 
    <copy todir="${leis-dir}/JARS" flatten="true"> 
     <fileset dir="${leis-dir}/proxy/dist/" > 
      <include name="${proxy-name}"/> 
     </fileset> 
    </copy> 

    <!--create a directory to hold the LEIS ear contents--> 
    <property name="ear.dir"   value="${leis-dir}/bin"/> 
    <property name="ear-name"   value="${ear.dir}/LEIS_AMP.ear"/> 
    <mkdir dir="${ear.dir}"/> 

    <!--create the ear from the directories contents--> 
    <ear destfile="${ear-name}" appxml="LEIS/application.xml"> 
     <metainf dir="${leis-dir}/LEIS/conf/EAR/META-INF" includes="weblogic-application.xml"/> 
     <fileset dir="${leis-dir}/JARS/"     includes="*.jar"/> 
     <fileset dir="${leis-dir}/JARS/"     includes="APP-INF/**" excludes="APP-INF/lib/wlfullclient.jar"/> 
    </ear> 

    <!-- Place the proxy-client jar in the amp ear--> 
    <zip update="true" destfile="${pm-dir}/amp2/deploy/dist/amp-main.ear"> 
     <zipfileset dir="${leis-dir}/proxy/dist/" includes="${proxy-client-name}" fullpath="APP-INF/lib/${proxy-client-name}"/> 
    </zip> 

</target> 

<target name="build-cpc"> 
    <copy file="${pm-dir}/amp2/deploy/lib/${AMP_TRANSFER_NAME}" todir="${leis-dir}/cpc-web-app/webapp/lib/cpc"/> 
    <ant antfile="build.xml" target="build-all-environments" dir="${leis-dir}/cpc-web-app/webapp" inheritAll="false"/> 
</target> 

<!--========================================= Build AMP and LEIS --!> 

<target name="build-all"> 
    <antcall target="build-LEIS-components"/> 
    <antcall target="build-pm"/> 
    <antcall target="build-proxy"/> 
    <antcall target="build-cpc"/> 
</target> 

+1

我很肯定你可以从Gradle调用Ant脚本,你可以这样做吗? – 2011-06-13 08:42:01

+2

为什么不尝试并发布特定问题?要求某人为你做这件事不会得到很多答复。 – 2011-06-13 16:54:39

+0

您应该阅读本指南:https://docs.gradle.org/current/userguide/ant.html。它很好地描述了这个过程。 – 2016-07-05 19:32:22

回答

10

蚂蚁和摇篮采取一些完全不同的方法来构建Java项目。与其试图将您的Ant任务转换为Gradle,您可能会发现,使用重构的项目组合可以更轻松地使用Gradle的约定并进行一定程度的自定义。

在你的具体情况下,我会采取一种渐进式的方法。从你的9个蚂蚁目标中挑选1个(比如“build-pm”),并专注于第一个构建。它应该给你一个好主意,你需要花费多少精力将你的ant任务转换为gradle。

+0

很棒的回答。我认为当人们试图从Ant移动到Gradle时,方法之间的差异不够突出.. importBuild的答案无处不在,但如果我想摆脱ant并仅使用gradle,那么怎么办?我可以用gradle方式重写我的ant任务吗? – YaP 2018-02-17 10:20:41

27

只需使用

ant.importBuild 'build.xml' 

导入你整个Ant脚本和替换逐一上手的任务。稍后尝试将您的项目重构为gradle约定,以便您的任务变得过时。