Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在清单中读取的嵌套属性_Java_Xml_Ant_Nested_Manifest - Fatal编程技术网

Java 在清单中读取的嵌套属性

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: 我想动态

我有以下build.xml代码。在这里,我确实修改了jar文件中的清单文件。在清单中,我想添加一些属性,如资产名称和资产基线

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检索值

当我使用上述属性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>