【问题标题】:ANT build : Variable inside resolver:artifacts is undefinedANT 构建:解析器中的变量:工件未定义
【发布时间】:2021-11-30 09:04:43
【问题描述】:

我已经设置了这个 ANT build.xml 文件,它从 txt 文件中提取版本信息,读取第一行,修剪它并将其复制到一个名为“versionVal”的变量中,代码如下:

<target name="clean"
      .
      . do something more
      .
      <loadfile property="versionValTxt" srcfile="version.txt">
                <filterchain>
                    <filterreader classname="org.apache.tools.ant.filters.HeadFilter">
                        <param name="lines" value="1" />
                    </filterreader>
                </filterchain>
            </loadfile>
            <loadresource property="versionVal">
              <propertyresource name="versionValTxt"/>
              <filterchain>
                <tokenfilter>
                  <filetokenizer/>
                  <replacestring from="V" to=""/>
                </tokenfilter>
                <striplinebreaks/>
              </filterchain>
            </loadresource>
            <echo>"Building for version: ${versionVal}"</echo>
    </target>

在其中一个目标中,我试图引用一个解析器工件,它使用此 versionVal 来查找名称中包含该特定版本的文件,如下所示:

<resolver:artifacts id="producedArtifacts" >
        <resolver:artifact file="${dist.dir}/App.${versionVal}.zip"/>
    </resolver:artifacts>

    <target name="nexus">
        <echo>"versionVal: ${versionVal}"</echo>
        <resolver:deploy artifactsref="producedArtifacts">
            <resolver:remoterepo refid="ossrh"/>
        </resolver:deploy>
    </target>

并且构建不断失败,如下所示,其中显示变量 versionVal 未定义。

C:\Users\XYZ\git\App\WebContent\dist\App.${versionVal}.zip does not exist

请注意,该块能够识别 ${dist.dir} 但它不识别 ${versionVal}。但是,我可以使用 target-nexus 内的 echo 打印该值。

如果有人能指出我正确的方向,将不胜感激。我无法弄清楚为什么在“解析器:工件文件”下无法识别此变量,以及是否有任何替代此问题的方法。

【问题讨论】:

    标签: build ant


    【解决方案1】:

    意识到我必须在目标块中包含以下解析器工件,然后在关系块中使用它作为依赖。进行此更改后,变量“versionVal”被识别。

    解决方案:

    <target name="packagedArtifact" >
            <resolver:artifacts id="producedArtifacts" >
                    <resolver:artifact file="${dist.dir}/App.${versionVal}.zip"/>
                </resolver:artifacts>
          </target>
      
        <target name="nexus" depends="packagedArtifact">
            <resolver:deploy artifactsref="producedArtifacts">
                <resolver:remoterepo refid="ossrh"/>
            </resolver:deploy>
    </target>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-29
      • 2014-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多