Java 在清单中读取的嵌套属性
我有以下build.xml代码。在这里,我确实修改了jar文件中的清单文件。在清单中,我想添加一些属性,如资产名称和资产基线 buildInfo.properties的内容如下:Java 在清单中读取的嵌套属性,java,xml,ant,nested,manifest,Java,Xml,Ant,Nested,Manifest,我有以下build.xml代码。在这里,我确实修改了jar文件中的清单文件。在清单中,我想添加一些属性,如资产名称和资产基线 buildInfo.properties的内容如下: articlelib_componentname=ABC component. articlelib_baselineName=Baseline_1. buslib_componentname=XYZ component. buslib_baselineName=Baseline_2. build.xml: 我想动态
articlelib_componentname=ABC component.
articlelib_baselineName=Baseline_1.
buslib_componentname=XYZ component.
buslib_baselineName=Baseline_2.
build.xml:
我想动态传递名称,即articlelib值,并从buildInfo.properties检索这些值。我在清单外部使用了macrodef,但当我在清单中使用相同的标记时,我无法使用它。我是否可以找到解决此问题的方法或替代解决方案,将动态值传递给清单,以便从builInfo.properties检索值
当我使用上述属性read micro in manifest标记时,我得到以下错误:
构建失败
H:\Ant\u Scripts\u Testing\hello.xml:27:manifest不支持嵌套的
ty读取元素。
位于org.apache.tools.ant.UnknownElement.handleChildrenUnknownElement.jav
a:359
位于org.apache.tools.ant.UnknownElement.handleChildUnknownElement.java:5
69
位于org.apache.tools.ant.UnknownElement.handleChildrenUnknownElement.jav
a:346
位于org.apache.tools.ant.UnknowneElement.ConfigureUnknowneElement.java:198
在org.apache.tools.ant.UnknownElement.maybeConfigureUnknownElement.jav上
a:160
位于org.apache.tools.ant.Task.performTask.java:347
位于org.apache.tools.ant.Target.executeTarget.java:357
位于org.apache.tools.ant.Target.performTasksTarget.java:385
位于org.apache.tools.ant.Project.executeSortedTargetsProject.java:1337
位于org.apache.tools.ant.Project.executeTargetProject.java:1306
在org.apache.tools.ant.helper.DefaultExecutor.executeTargetsDefaultExe
java:41
位于org.apache.tools.ant.Project.executeTargetsProject.java:1189
位于org.apache.tools.ant.Main.runBuildMain.java:758
位于org.apache.tools.ant.Main.startAntMain.java:217
位于org.apache.tools.ant.launch.Launcher.runLauncher.java:257
位于org.apache.tools.ant.launch.Launcher.mainluncher.java:104
原因:类org.apache.tools.ant.taskdefs.Manifest不支持嵌套
属性读取元素。
在org.apache.tools.ant.IntrospectionHelper.throwNotSupportedIntrospect上
java:447
位于org.apache.tools.ant.UnknownElement.handleChildrenUnknownElement.jav
a:349将动态值分配给manisfest之外的新变量,并读取清单中解决问题的同一变量
<property name="name" value="articlelib" />
<property name="name_path" value="${name}_componentName" />
<property file="buildInfo.properties" prefix="buildInfo" />
<property file="buildInfo.properties"/>
<macrodef name="property-read">
<attribute name="name"/>
<attribute name="from"/>
<sequential>
<property name="@{name}" value="${@{from}_componentName}"/>
</sequential>
</macrodef>
<target name="test">
<echo>PRODUCT_NAME: ${name}</echo>
<property-read name="instance" from="${name}"/>
<echo>DYNAMIC PROPERTY VALUE: ${instance}</echo>
</target>
<target name="earchive" description="Generate the EAR file">
<jar destfile="${dir.dist}/${name}.jar">
<manifest>
<attribute name="Specification-Title" value="${name}" />
<property-read name="instance" from="${name}"/>
<attribute name="Asset-Component" value="${instance}" />
<echo>DYNAMIC PROPERTY VALUE: ${instance}</echo>
<attribute name="Asset-Baseline" value="${buildInfo.articleliblocal.baselineName}" />
</manifest>
</jar>
</target>
</project>