2010-04-07 2 views
17

Seit Wochen habe ich mit Maven gerungen, um unser Projekt "richtig" zu implementieren.Wie unterdrücke ich Maven Assembly Plug-in, die Dateien überspringen, die bereits hinzugefügt wurden? Oder Überschreiben zulassen?

bin ich fast fertig, aber ich habe ein kleines Problem stur:

Wenn ich die Maven-Montage-Plugin mit dem „Verzeichnis“ Ziel verwenden, wie in

mvn assembly:directory

ich viele Konsole bekommen Ausgabe wie folgt aus:

[INFO] tomcat/conf already added, skipping
 [INFO] tomcat/conf/Catalina already added, skipping
 [INFO] tomcat/conf/Catalina/localhost already added, skipping
 [INFO] tomcat/webapps already added, skipping

ich habe meine eigene Assembly Descriptor t geschrieben hatz kopiert im Grunde mehrere FileSets in verschiedene Unterverzeichnisse innerhalb unseres Deploy-Verzeichnisses. Meldungen wie die oben genannten erscheinen immer dann, wenn eine Datei von einem FileSet an einen Speicherort kopiert wird, an dem ein anderes FileSet bereits die Basisverzeichnisstruktur erstellt hat (und einige "Standard" -Dateien, die überschrieben werden können).

Also, ich habe eine harte Zeit, herauszufinden:

Wie kann ich entweder 1) unterdrücken diese Nachrichten (aber nur die „bereits hinzugefügt“ -Nachrichten) oder 2) ermöglichen schreiben?

Antwort

12

Die Info-Meldungen aus dem Plexus Archiver kommen. Es gibt einen offenen Bug-Report zu diesem Thema:

http://jira.codehaus.org/browse/PLXCOMP-129

+1

Das Update auf die neueste Version des Maven-Assembly-Plugins hat es für mich behoben. – GuiSim

+2

@GuiSim danke es funktionierte für mich. Ich habe 2.5.5 Version verwendet. https://maven.apache.org/plugins/maven-assembly-plugin/usage.html – shashaDenovo

1

wenn ich Ihre Frage richtig verstehen, sollten Sie die maven-dependency plugin verwenden, um Dateien zu kopieren/überschreiben, anstatt die Montage-Plugin verwenden ...

+0

Danke für Ihre Antwort. Das maven-dependency-plugin scheint nicht gut für meine Bedürfnisse zu sein. In der Tat habe ich es vor ein paar Wochen ausprobiert und nach dem Eingraben stellte ich fest, dass es mehr auf das Kopieren von Artefakten (wie JUnit) als auf Dateigruppen ausgerichtet ist. Es scheint, dass das Ziel assembly: directory die bessere Wahl ist, um Dateigruppen in ein Ausgabeverzeichnis zu verschieben (zu assemblieren). Von dem, was ich sammle, ist das Assembly-Plugin für, wenn Sie Dinge an einem Ort gruppieren möchten, typischerweise zum Zippen. Gerade jetzt, mein einziges Problem ist, dass ich nicht herausfinden kann, wie man die "bereits addierten" Nachrichten unterdrückt/vermeidet. – gMale

+0

Hm..der maven-dependency-plugin (http://maven.apache.org/plugins/maven-dependency-plugin/copy-mojo.html) schien genau das zu sein, was Sie brauchen (es hat Überschreiboptionen usw.) ..copy Artefakte (Dateien) an einen bestimmten Ort ... Vielleicht wäre es eine gute Idee, einen Blick auf die Maven-Cargo-Plugin (http://cargo.codehaus.org/Maven2+plugin), Ursache es kann start/stop/deploy zu tomcat etc. BTW: Welche Version des Assembly-Plugins benutzt du? Kann Update auf neueste .. – khmarbaise

+0

Dies löst nicht genau mein Problem, aber ich werde Ihre Antwort akzeptieren, da ich keine anderen habe. Es ist der Gedanke, der zählt, oder? lol – gMale

2

Es ist wahrscheinlich besser Maven-Ressourcen-Plugin mit Kopie-Ressourcen Ziel zu verwenden, um die Verzeichnisse an einem Strang ziehen Sie an einen Ort benötigen. Erstellen Sie eine Ausführung für Ihre grundlegende Verzeichnisstruktur, und fügen Sie nachfolgende Ausführungen für die benutzerdefinierten Teile hinzu. Wenn Sie die Eigenschaft overwrite des Ziels auf true festlegen, wird sichergestellt, dass die benutzerdefinierten Dateien die Standardwerte überschreiben.

Verwenden Sie dann in Ihren Assemblydeskriptoren die Dateigruppe, die Sie gerade erstellt haben.

1

Maven 3.0.4:

ich immer noch diese Nachrichten erhalten, wenn ein einzelnes Gefäß oder kombinierte Quellen für ausschüttende. http://jira.codehaus.org/browse/PLXCOMP-129 scheint nicht in Maven zu sein.

Meine Problemumgehung besteht darin, verschiedene Ausschlussmuster zu verwenden, insbesondere% regex [..] für Ordner. Ich weiß nicht, wie stabil oder allgemein das ist, und klar muss es aufrechterhalten werden. Wir sind jedoch in der Situation, in der wir so viele Nachrichten bekommen, die wir nicht sehen können, wenn eine echte Nachricht erscheint, über die wir etwas tun müssen.

Überspringe die NOTICE, LICENSE - Ich habe später die korrekten Textversionen in die Assembly eingefügt. Die partiellen Abhängigkeiten sind sowieso nicht gut genug.

Die Übereinstimmung des Ordnernamens schließt alles aus, nicht den Ordner selbst. Ordner erscheinen in der Ausgabe und keine INFO-Ebene "überspringt" Nachrichten.

<unpackOptions> 
    <excludes> 
    <exclude>**/NOTICE*</exclude> 
    <exclude>**/LICENSE*</exclude> 
    <exclude>**/DEPENDENCIES*</exclude> 
    <exclude>META-INF/**</exclude> 
    <!-- Exclude folders - this removes "skipping" messages --> 
    <exclude>%regex[.*/]</exclude> 
    </excludes> 
</unpackOptions> 
9

Der von vocaro erwähnte Plexus-Fehler wurde behoben.Die Verwendung des maven-assembly-plugin mit der Version 2.4 (zum Zeitpunkt des Schreibens am höchsten) druckt die ausführlichen Nachrichten nicht.

+0

Dies behoben dieses lästige Problem für mich. Vielen Dank! –

2
  1. Upgrade auf Maven 3.1.x oder höher - siehe http://maven.apache.org/maven-logging.html

    Die Standard-Distribution Maven, von Maven 3.1.0 weiter, verwendet die SLF4J API für die SLF4J Einfache Implementierung kombiniert Protokollierung.

  2. Jetzt mit Simplelogger haben wir eine feinkörnige Kontrolle über Log-Nachrichten. Um festzustellen, welche Logger die unerwünschten Nachrichten verursacht, bearbeiten MAVEN_HOME/conf/logging/simplelogger.properties und ändern Sie die folgenden Schritte aus:

    org.slf4j.simpleLogger.showLogName = true

  3. Beachten Sie die unerwünschten Müll in Ihrem Build Ausgang:

    [INFO] org.codehaus.plexus.archiver.jar.JarArchiver - META-INF/MANIFEST.MF already added, skipping 
    
  4. Zurück in simplelogger.properties, Protokollierungsebene für die säumigen Logger reduzieren (n) von Klassennamen

    org.slf4j.simp (auch showLogName zurück auf false gesetzt) leLogger.log.org.codehaus.plexus.archiver.jar.JarArchiver = warn

+0

Dies ist die beste Antwort auf diese Frage .. thx! – codeturner

Verwandte Themen