2012-01-25 107 views
5

我有一個問題。我爲maven使用antrun插件,然後做下一步:我有文件夾和子文件夾(我不知道什麼是子文件夾和它們的編號),並且我爲它們的子文件夾存檔(名稱爲子文件夾 - 「1 「,存檔名稱 - 」1.acp「)。可變屬性的螞蟻不可變屬性

   <tasks> 
        <taskdef resource="net/sf/antcontrib/antlib.xml" classpath="${settings.localRepository}/ant-contrib/ant-contrib/1.0b3/ant-contrib-1.0b3.jar" /> 
        <taskdef resource="net/sf/antcontrib/antcontrib.properties" classpath="${settings.localRepository}/ant-contrib/ant-contrib/1.0b3/ant-contrib-1.0b3.jar" /> 
        <for param="file"> 
         <path> 
          <dirset dir="src/main/bootstrap" includes="/*" /> 
         </path> 
         <sequential> 
          <basename property="dir" file="@{file}" /> 
          <zip destfile="${project.build.outputDirectory}/alfresco/extension/agilent/${dir}.acp" basedir="@{file}" /> 
         </sequential> 
        </for> 
       </tasks> 

但屬性目錄是不變的!所有檔案都有名稱「1.acp」。如何使這個屬性可變或以另一種方式做到這一點?

回答

6

你可以使用一個1.8 Ant的Local task

您的情況:

<sequential> 
    <local name="dir"/> 
    <basename property="dir" file="@{file}"/> 
    <zip 
    destfile="${project.build.outputDirectory}/alfresco/extension/agilent/${dir}.acp" 
    basedir="${dir}" 
    /> 
</sequential> 
4

您可以使用ant貢獻中的var task

酒店unset,讓你(從上面的鏈接例子)復位值:

<property name="x" value="6"/> 
    <echo>${x}</echo> <!-- will print 6 --> 
    <var name="x" unset="true"/> 
    <property name="x" value="12"/> 
    <echo>${x}</echo> <!-- will print 12 --> 

所以,你必須把它固定到:

<sequential> 
    <var name="dir" unset="true"/> 
    <basename property="dir" file="@{file}" /> 
    <zip destfile="${project.build.outputDirectory}/alfresco/extension/agilent/${dir}.acp" basedir="@{file}" /> 
</sequential> 
+0

謝謝!這是真正的工作! – VladislavLysov