ANT 构建:resolver:artifacts 内的变量未定义
ANT build : Variable inside resolver:artifacts is undefined
我已经设置了这个 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 打印该值。
如果有人能指出正确的方向,我将不胜感激。我无法弄清楚为什么在“解析器:工件文件”下无法识别此变量,以及是否有任何替代方法可以解决此问题。
意识到我必须在目标块中包含以下解析器工件,然后将其用作依赖块中的关系块。进行此更改后,变量 '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>
我已经设置了这个 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 打印该值。
如果有人能指出正确的方向,我将不胜感激。我无法弄清楚为什么在“解析器:工件文件”下无法识别此变量,以及是否有任何替代方法可以解决此问题。
意识到我必须在目标块中包含以下解析器工件,然后将其用作依赖块中的关系块。进行此更改后,变量 '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>