ant声明实现 - 标题/版本/供应商未设置,但它们是

时间:2011-08-24 21:49:54

标签: ant

我在详细模式下运行ant 1.8.0。我创建了一个包含Implementation-Title,-Version和-Vendor的清单,生成的JAR包含一个包含其中的清单。 JAR的课程运行良好。然而,ant的输出说

  

[jar] No Implementation-Title set.No Implementation-Version set.No Implementation-Vendor set。

这只是蚂蚁中的一个错误,还是我错过了什么?

由于

这是我的蚂蚁代码:

<?xml version="1.0" encoding="UTF-8"?>
<project name="helloworld.makejar" default="makejar" basedir=".">
  <target name ="makejar" description="Create a JAR for the HelloWorld project">
    <delete file="helloworld.jar" />
    <delete file="MANIFEST.MF" />

    <manifest file="MANIFEST.MF">
      <attribute name="Built-By" value="${user.name}" />
      <attribute name="Main-Class" value="project.builder.example.HelloWorld" />
      <section name="common">
        <attribute name="Specification-Title"    value="Example" />
        <attribute name="Specification-Version"  value="1.0.0" />
        <attribute name="Specification-Vendor"   value="Example Organization" />
        <attribute name="Implementation-Title"   value="common" />
        <attribute name="Implementation-Version" value="1.0.0 today" />
        <attribute name="Implementation-Vendor"  value="Acme Corp." />
      </section>
    </manifest>

    <jar jarfile="helloworld.jar"
         includes="**/*.class"
         basedir="bin"
         manifest="MANIFEST.MF"
     />
  </target>
  <javac srcdir="src" destdir="bin" />
</project>

1 个答案:

答案 0 :(得分:5)

我认为问题是必须将属性定义为清单元素的子元素,而不是嵌套部分的子元素。

<强>更新

使用内联清单元素可能会产生影响。以下代码段来自Ant文档:

<jar destfile="test.jar" basedir=".">
    <include name="build"/>
    <manifest>
        <!-- Who is building this jar? -->
        <attribute name="Built-By" value="${user.name}"/>
        <!-- Information about the program itself -->
        <attribute name="Implementation-Vendor" value="ACME inc."/>
        <attribute name="Implementation-Title" value="GreatProduct"/>
        <attribute name="Implementation-Version" value="1.0.0beta2"/>
        <!-- details -->
        <section name="common/MyClass.class">
            <attribute name="Sealed" value="false"/>
        </section>
    </manifest>
</jar>