2010-03-12 4 views
5

Ich bin neu zu Maven. Ich möchte die Filterung in einem Multimodulprojekt verwenden. Der Verpackungstyp des Eltern-Pom ist auf Pom festgelegt. Die Struktur des Projekts ist wie folgt:Maven2 Anwendung Filterung auf die Datei unter Pom-Typ Verpackung

pom.xml 
    | 
    |______MODULE1 
    |  | 
    |  pom.xml 
    |  File1_needed_to_be_filtered 
    | 
    File2_needed_to_be_filtered 

Bitte beachten Sie, dass Module1 auch Multimodul-Projekt ist. Bitte sagen Sie mir, wie kann ich Filterung auf Datei1 und Datei2 anwenden. Und wenn ich Filterung auf Datei1 anwende, dann wo wird die verarbeitete Datei gespeichert werden (Da Pom-Datei, deren Verpackungstyp POM ist, erstellen Sie keinen Ordner mit dem Namen Ziel!) Bitte helfen Sie mir, da dies sehr kritisch für mich ist und dieses Problem angesprochen wird nirgendwo sonst im Internet.

Antwort

0

Um Maven Filter Ressourcen beim Kopieren, Filtern für das Ressource-Verzeichnis in Ihrem pom.xml auf true gesetzt:

<project> 
    ... 
    <build> 
    <resources> 
     <resource> 
     <directory>src/main/resources</directory> 
     <filtering>true</filterineg> 
     </resource> 
    </resources> 
    </build> 
</project> 

Aber wenn Sie Ressourcen filtern wollen, sie nicht in einem Projekt gesteckt mit Eine Verpackung vom Typ pom, das macht keinen Sinn (aus dem Grund, den Sie selbst gegeben haben). Eigentlich verstehe ich nicht, was Sie erreichen wollen (da Sie wissen, dass die Dinge nicht so funktionieren).

+0

Hey Pascal zuerst vielen Dank für Ihr Interesse. Eigentlich muss ich Multi-Modul-Projekt verwenden, deshalb verwende ich Pom Verpackungstyp. Auch die zu filternde Datei ist im Ordner src/main/resources nicht vorhanden, sie befindet sich im Stammverzeichnis des übergeordneten Ordners. Ich kann die Hierarchie der Dateien nicht ändern, deshalb gehe ich all diese Probleme durch. – Harmit

+0

@Hamit Die Pom-Verpackung ist in Ordnung (und tatsächlich erforderlich) für die Aggregation von Modulen Ihres Multi-Modul-Setups, aber ich befürchte, dass Sie Ressourcen in solchen Modulen nicht filtern können. Was ich nicht verstehe, ist, wie diese "gefilterten" Ressourcen verwendet werden sollen. Was wirst du mit ihnen machen, da sie in einem Modul vom Typ Pom sind? –

+0

Diese Ressourcen sind eigentlich Property-Dateien. Diese Dateien (Datei1 und Datei2) werden zusammen mit den anderen Dateien, die nach dem Filtern und Kompilieren erstellt wurden, an den Remote-Speicherort kopiert. Diese Konfigurationsdateien werden auch von Untermodulen verwendet. Ich muss die Werte in diesen Dateien manuell einstellen, also dachte ich über Filterung nach. Aber ich fürchte, es gibt einen Weg dazu. – Harmit

4

Sie könnten die maven-assembly-plugin verwenden - mit einem 'dir' Format (obwohl, wenn es mehr als eine Datei gibt, könnte es sinnvoll sein, es zu einem Archiv irgendeiner Art zu machen). Die descriptor format ermöglicht Ihnen zu filtern. Dies sollte mit der oben beschriebenen Pom- und Dateihierarchie funktionieren.

Allerdings würde ich empfehlen, diese in Geschwistermodule statt der Eltern zu setzen. Dies hält die Logik von Ihrem Aggregator Pom, und (sobald Sie damit anfangen) Sie möglicherweise entscheiden, es ist einfacher, die Assembly zu verwenden, um sie zusammen mit Ihren anderen Komponenten zu verteilen, für die Sie sowieso ein Modul möchten.

+0

Hallo Zac, Danke für die Antwort. Eigentlich habe ich bereits die zweite Option gewählt. Allerdings würde ich gerne Ihre erste Option versuchen, wenn Sie etwas Zeit haben. – Harmit

Verwandte Themen