2014-04-15 75 views
0

我有以下build.xml代碼。在這裏我修改了jar文件中的清單文件。在清單中,我想添加一些屬性,例如Asset-Name和Asset-Baseline。的buildInfo.properties嵌套屬性 - 在清單中讀取

內容爲如下:

articlelib_componentname=ABC component. 
articlelib_baselineName=Baseline_1. 
buslib_componentname=XYZ component. 
buslib_baselineName=Baseline_2. 

的build.xml: 我想動態傳遞的名稱即articlelib值,並從buildInfo.properties檢索值。我使用macrodef外部清單它的工作文件,但是當我使用相同的清單標記我無法使用它。我能有這個問題,或者替代解決方案周圍的工作傳遞動態值來體現,這樣我可以從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 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> 

當我使用上面的屬性讀取微檢索值在清單標籤我得到以下錯誤:

構建失敗

H:\ Ant_Scripts_Testing \的hello.xml:27:清單不支持NE sted「適當的 ty-read」元素。 在org.apache.tools.ant.UnknownElement.handleChildren(UnknownElement.jav 一個:359) 在org.apache.tools.ant.UnknownElement.handleChild(UnknownElement.java:5 69) 在org.apache。 tools.ant.UnknownElement.handleChildren(UnknownElement.jav 一個:346) 在org.apache.tools.ant.UnknownElement.configure(UnknownElement.java:198 ) 在org.apache.tools.ant.UnknownElement.maybeConfigure (UnknownElement.jav a:160) at org.apache.tools.ant.Task.perform(Task.java:347) at org.apache.tools.ant.Target.execute(Target.java:357) 在org.apache.tools.ant.Target.performTasks(Target.java :385) at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1337) at org.apache.tools.ant.Project.executeTarget(Project.java:1306) at org.apache.tools .ant.helper.DefaultExecutor.executeTargets(DefaultExe cutor.java:41) at org.apache.tools.ant.Project.executeTargets(Project.java:1189) at org.apache.tools.ant.Main.runBuild (Main.java:758) at org.apache.tools.ant.Main.startAnt(Main.java:217) at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257) 在org.apache.tools.ant.launch.Launcher.main(Launcher.java:104) 引起的:class org.apache.tools.ant.taskdefs.Manifest不支持嵌套 ed「proper ty-read「元素。 在org.apache.tools.ant.IntrospectionHelper.throwNotSupported(內省 ionHelper.java:447) 在org.apache.tools.ant.UnknownElement.handleChildren(UnknownElement.jav 一個:349)

回答

0

指定與動態值賦予manisfest之外的新變量,並在清單中讀取相同的變量來解決問題。