2012-01-25 57 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