java - nested property-read in manifest -
i have following build.xml code. here modify manifest file in jar file. in manifest wanted add few attributes such asset-name , asset-baseline.
content of buildinfo.properties followed:
articlelib_componentname=abc component. articlelib_baselinename=baseline_1. buslib_componentname=xyz component. buslib_baselinename=baseline_2. build.xml: want pass name i.e articlelib value dynamically, , retrieve values buildinfo.properties. used macrodef outside manifest it's working file when use same in manifest tag i'm unable use it. can have work around problem or alternative solution pass dynamic values manifest can retrieve values builinfo.properties
<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 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> when use above property-read micro in manifest tag following error:
build failed
h:\ant_scripts_testing\hello.xml:27: manifest doesn't support nested "proper ty-read" element. @ org.apache.tools.ant.unknownelement.handlechildren(unknownelement.jav a:359) @ org.apache.tools.ant.unknownelement.handlechild(unknownelement.java:5 69) @ org.apache.tools.ant.unknownelement.handlechildren(unknownelement.jav a:346) @ org.apache.tools.ant.unknownelement.configure(unknownelement.java:198 ) @ org.apache.tools.ant.unknownelement.maybeconfigure(unknownelement.jav a:160) @ org.apache.tools.ant.task.perform(task.java:347) @ org.apache.tools.ant.target.execute(target.java:357) @ org.apache.tools.ant.target.performtasks(target.java:385) @ org.apache.tools.ant.project.executesortedtargets(project.java:1337) @ org.apache.tools.ant.project.executetarget(project.java:1306) @ org.apache.tools.ant.helper.defaultexecutor.executetargets(defaultexe cutor.java:41) @ org.apache.tools.ant.project.executetargets(project.java:1189) @ org.apache.tools.ant.main.runbuild(main.java:758) @ org.apache.tools.ant.main.startant(main.java:217) @ org.apache.tools.ant.launch.launcher.run(launcher.java:257) @ org.apache.tools.ant.launch.launcher.main(launcher.java:104) caused by: class org.apache.tools.ant.taskdefs.manifest doesn't support nest ed "property-read" element. @ org.apache.tools.ant.introspectionhelper.thrownotsupported(introspect ionhelper.java:447) @ org.apache.tools.ant.unknownelement.handlechildren(unknownelement.jav a:349)
assigned dynamic value new variable outside manisfest , read same variable in manifest solved issue.
Comments
Post a Comment