2012-05-29 18 views
18

beim Erstellen einer WAR-Datei beschädigt ich kopiere eine Reihe von Gläsern aus einem Ort in einen Ordner innerhalb des Krieges. Während die Dateien kopiert werden, denke ich, dass sie beschädigt werden, weil die gleichen Klassen-Dateien des jars, wenn sie außerhalb des Krieges genommen werden, mit einem Debugger geöffnet werden, während sie sich nicht öffnen, nachdem sie aus der War-Datei genommen haben. JAR-Datei wird beim Erstellen mit Maven

Dies ist ein Teil meines Krieg pom.xml, wo ich die Gläser kopieren

<execution> 
    <id>copy-jars</id> 
    <phase>process-resources</phase> 
    <goals> 
     <goal>copy-resources</goal> 
    </goals> 
    <configuration> 
     <outputDirectory>${basedir}/target/${project.artifactId}-${buildNumber}/somefolder</outputDirectory> 
     <resources> 
      <resource> 
       <directory>SomeSourceDirectory</directory> 
       <filtering>true</filtering> 
       <includes> 
        <include>**/**</include> 
       </includes> 
      </resource> 
     </resources> 
    </configuration> 
</execution> 

SomeSourceDirectory einige Gläser hat und einige andere Dateien Das Ergebnis ist: myWar/somefolder/a.jar aber wenn ich die Klassen innerhalb dieses Glas in einem debugger..i öffnen Fehler in WinZip erhalten, dass

Invalid compressed data to extract. 
Severe Error: Compressed data is invalid 

jedoch die gleiche Klassendatei angezeigt werden können, wenn ich es in ursprünglichen Ordner anzuzeigen außerhalb der dh Krieg. Also gibt es einen Fehler beim Kopieren der Gläser? Danke.

+0

Sind die Gläser gleich? Gleiche Dateigröße, vielleicht gleiche md5 Prüfsumme ... – cha0site

+0

die Dateigröße ist die gleiche, aber md5 Prüfsumme scheint anders .. ich überprüft mit md5.jar heruntergeladen von http://activityworkshop.net/software/md5/index.html ..can ' verstehst du warum verschiedene Prüfsummen? – pranay

Antwort

41

Entfernen <filtering>true</filtering>, es korrumpiert die JAR-Dateien.

+0

großartig! Vielen Dank Emmanuel .. das hat funktioniert :) aber immer noch wundern warum hat Maven dieses seltsame Verhalten? Warum ist Filtern dann nützlich? – pranay

+3

Filtern ist nützlich, wenn Sie Textressourcen kopieren, die beispielsweise Verweise auf die Projektversion enthalten. Bei Binärdateien wird der Inhalt beschädigt. –

+0

Danke nochmal :) – pranay

9

Auch Sie können profitieren weiterhin Maven-Filterung zu verwenden, ohne Gläser innen korrumpiert (ja, ich brauche mit Gläsern innen zu verpacken und Filtern verwenden zu)

Wir wählen aus gefilterten Erweiterungen auszuschließen Glas.

In th pluginManagement Abschnitt der Mutter pom setzten wir diese Konfiguration

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-resources-plugin</artifactId> 
    <version>2.5</version> 
    <configuration> 
     <encoding>${project.build.sourceEncoding}</encoding> 
     <nonFilteredFileExtensions> 
     <nonFilteredFileExtension>jar</nonFilteredFileExtension> 
     <nonFilteredFileExtension>pdf</nonFilteredFileExtension> 
     <nonFilteredFileExtension>swf</nonFilteredFileExtension> 
     <nonFilteredFileExtension>zip</nonFilteredFileExtension> 
     <nonFilteredFileExtension>bz2</nonFilteredFileExtension> 
     <nonFilteredFileExtension>gz</nonFilteredFileExtension> 
     <nonFilteredFileExtension>acp</nonFilteredFileExtension> 
     <nonFilteredFileExtension>bin</nonFilteredFileExtension> 
     <nonFilteredFileExtension>odt</nonFilteredFileExtension> 
     <nonFilteredFileExtension>doc</nonFilteredFileExtension> 
     <nonFilteredFileExtension>xls</nonFilteredFileExtension> 
     </nonFilteredFileExtensions> 
    </configuration> 
    </plugin> 

Hinweis wir jar Erweiterungen sowie Standard-Maven ausgeschlossen Dateitypen (es ist ein Reißverschluss, nachdem alle) hinzugefügt.

Neben der Vermeidung von Korruption des Archivs beschleunigt es auch den Prozess, da es keine großen Dateien filtern muss.

0

Ich hatte einen ähnlichen Fehler, wenn ich

<copy ...> 
<fileset ... /> 
<filterchain> 
    <tokenfilter> 
     <replacestring from="..." to="..." /> 
    </tokenfilter> 
</filterchain> 
</copy> 

meiner Kopie Aufgabe in ANT hinzugefügt haben. Es hat die JAR-Dateien beim Kopieren beschädigt. Ich habe das gelöst, indem ich den Filter NUR auf die Zieltextdateien und nicht auf JAR-Dateien anwende.

Verwandte Themen