简体   繁体   English

Ant 任务:使用参数将文件添加到存档

[英]Ant task: add a file to an archive with a parameter

everyone!每个人!

I'm currently struggling with an Ant task for a DITA plugin.我目前正在为 DITA 插件的 Ant 任务而苦苦挣扎。 It would consist in adding a file (whatever the extension is) to an archive via the command line.它包括通过命令行将文件(无论扩展名是什么)添加到存档中。 The idea is to set a parameter like this:这个想法是设置这样的参数:

dita -f mymap.ditamap -transtype htmlCustom -Dadd-file=fileOfMyChoice.txt

The part that interests me is the last one: -Dadd-file=fileOfMyChoice.txt我感兴趣的部分是最后一个: -Dadd-file=fileOfMyChoice.txt

So far, I've tried to include two choices into my target.到目前为止,我已经尝试在我的目标中包含两个选择。

  1. The user sets a add-file parameter and its value is added into the fileset with the base set of generated files.用户设置add-file参数,并将其值与生成的文件的基本集一起添加到文件集中。
  2. Or, nothing is passed via this parameter and the base set of generated files is included in the fileset.或者,不会通过此参数传递任何内容,并且生成文件的基本集包含在文件集中。

The part that is still challenging to me if the one that identifies if a parameter add-file is passed and how its value is transmitted in a fileset.如果识别参数add-file是否被传递以及它的值如何在文件集中传输的部分对我来说仍然具有挑战性。

If you have any pointers for me, that would be awesome.如果您对我有任何指示,那就太棒了。

<target name="map2exportmap">
    <dirname property="dita.temp.dir.fullpath" file="${dita.temp.dir}${file.separator}dummy.file"/>
    <xslt in="${dita.temp.dir.fullpath}${file.separator}.job.xml"
      out="${dita.temp.dir.fullpath}${file.separator}allResources.out"
      style="${dita.plugin.com.myplugin.dir}/xsl/generateAllResources.xsl" 
      force="true"/>
    <mkdir dir="${dita.map.output.dir}/temp"/>

    <fileset id="global" dir="${user.input.dir}/" includesfile="${dita.temp.dir.fullpath}${file.separator}allResources.out" />
    <union id="globalAddendum">
      <fileset id="ditaGeneration" dir="${user.input.dir}/" includesfile="${dita.temp.dir.fullpath}${file.separator}allResources.out"/>
      <fileset id="additionalFile" dir="${user.input.dir}/" includesfile="${add-File}"/>
    </union>
    
<condition property="withAddedFile" refid="globalAddendum" else="global">
        <isset property="add-file"/>
    </condition>
    <copy todir="${dita.map.output.dir}/temp">
      <fileset dir="${user.input.dir}/" includesfile="${withAddedFile}"/>
    </copy>

    <zip destfile="${dita.map.output.dir}/${dita.map.filename.root}.zip">
      <fileset dir="${dita.map.output.dir}/temp"/>
    </zip>
    <delete dir="${dita.map.output.dir}/temp"/>
  </target>

everyone!每个人! I found the solution!我找到了解决方案!

Here is the code if it can help anyone.如果它可以帮助任何人,这是代码。

<target name="map2exportmap">
<dirname property="dita.temp.dir.fullpath" file="${dita.temp.dir}${file.separator}dummy.file"/>
<xslt in="${dita.temp.dir.fullpath}${file.separator}.job.xml"
  out="${dita.temp.dir.fullpath}${file.separator}allResources.out"
  style="${dita.plugin.com.xxxxx.xxxxxxx.dir}/xsl/generateAllResources.xsl" 
  force="true"/>
<mkdir dir="${dita.map.output.dir}/temp"/>
<!-- Create two filesets depending on the argument `add-file` sent in the command line -->
<fileset id="base" dir="${user.input.dir}/" includesfile="${dita.temp.dir.fullpath}${file.separator}allResources.out" />
<fileset id="addedFile" file="${add-file}"/>
<!-- this is the core of the condition. It tests if there was an argument for `add-file, then ii sets the property `with.or.without.added.file`-->
<condition property="with.or.without.added.file" value="addedFile" else="base">
  <isset property="add-file"/>
</condition>
<echo>${with.or.without.added.file}</echo>
<echo>${add-file}</echo>
<!-- Process the copy of content in the tempoerary folder-->
<copy todir="${dita.map.output.dir}/temp">
  <fileset refid="${with.or.without.added.file}"/>
  <fileset id="base" dir="${user.input.dir}/" includesfile="${dita.temp.dir.fullpath}${file.separator}allResources.out" />
</copy>
<!-- Execute the zip packaging -->
<zip destfile="${dita.map.output.dir}/${dita.map.filename.root}.zip">
  <fileset dir="${dita.map.output.dir}/temp"/>
</zip>
<delete dir="${dita.map.output.dir}/temp"/>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM