2011-08-24 6 views
6

Używam ant 1.8.0 w trybie gadatliwym. Utworzyłem manifest zawierający tytuł implementacji, -wersję i -Vendor, a wynikowy plik JAR zawiera manifest z tymi w nim zawartymi. Klasa JAR działa dobrze. Jednak wyjście z ant mówi:Ant Claim Implementation-Title/Version/Vendor nie jest ustawiony, ale są one

[słój] Brak zestawu do implementacji. Brak zestawu implementacji-wersji.No zestaw implementacji-dostawcy.

Czy to tylko błąd w mrówce czy coś tu brakuje?

Dzięki

Oto mój mrówka Kod:

<?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> 
+0

W jaki sposób tworzysz manifest? Czy utworzyłeś go ręcznie lub czy używasz elementu zagnieżdżonego pakietu zadań Anta? Czy możesz opublikować zawartość pliku manifestu? –

+0

Dzięki, Kevin. Dodałem mój kod mrówki, aby zobaczyć, jak manifest jest tworzony i zużywany. –

Odpowiedz

4

Myślę, że problemem jest to, że atrybuty muszą być zdefiniowane jako dzieci oczywistego elementu, w przeciwieństwie do bycia dziećmi sekcji zagnieżdżonych.

Aktualizacja

Może przy użyciu inline oczywisty element, by coś zmienić. Poniższy fragment pochodzi z dokumentacji 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> 
+0

Usunięcie hierarchii sekcji nie rozwiązało problemu. Co więcej, zauważam, że nie jest to niepoprawne z linii poleceń. Być może jest to szczególna cecha mrówki Eclipse? –

+0

Inną rzeczą, która może mieć znaczenie, jest użycie wbudowanego elementu manifestu w zadaniu jar zamiast oddzielnego elementu manifestu. Odpowiedź zaktualizowana powyżej. –

+0

Bingo! To sprawia, że ​​działa w środowisku Eclipse. Dzięki. –

Powiązane problemy