2011-06-13 180 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約定,以便您的任務變得過時。