Ich verwende das Maven Application Assembler Plugin, um eigenständige ausführbare Dateien aus meinem Java-Projekt zu generieren. Die Anwendung liest Konfigurationsdateien ein, einschließlich Spring-Dateien. Das Application Assembler-Plugin hat eine Option (standardmäßig aktiviert), um ein etc / -Verzeichnis zum Klassenpfad der Anwendung hinzuzufügen, aber was soll ich tun, damit das Plugin meine Konfigurationsdateien in dieses Verzeichnis kopiert?
Oder allgemeiner: Wo befindet sich in Maven der koschere Speicherort für Anwendungskonfigurationsdateien, die NICHT in das Artefakt gepackt werden sollten?
Sie können auch die Ressourcenfilterung verwenden: Ссылка
schalte die Filterung ein:
%Vor%Erstellen Sie eine Datei unter src / main / resources wie: application.properties
application.properties
%Vor%Dann richte ein Profil ein und setze einige Eigenschaften vielleicht in einer settings.xml Das legt unterschiedliche Eigenschaften fest, abhängig davon, ob es sich um einen Entwickler oder einen Produktions-Build handelt. siehe: Ссылка
Ich habe unterschiedliche Eigenschaften, je nachdem, ob dies der Build-Server, der Entwickler oder eine Produktionsbereitstellung ist.
mvn -Denv = dev || mvn -Denv = dev-build || mvn -Denv = Produktion
Der Maven Link hat eine ziemlich gute Beschreibung.
Du könntest das Maven Assembly Plugin ausprobieren. Ich habe es in Verbindung mit dem Appassembler-Plugin verwendet.
Konfigurieren Sie den appassembler so, dass er auf den gewünschten Namen für das Konfigurationsverzeichnis verweist, wenn Sie "etc" nicht möchten. Das Assembly-Plugin stellt alles in seinem eigenen Ausgabeverzeichnis zusammen, also konfiguriere ich das Assembly-Plugin, um die Bin- und Repo-Verzeichnisse aus dem Appassembler-Verzeichnis in sein Ausgabeverzeichnis zu kopieren, dann kopiere ich die Konfigurationsdateien (meine befinden sich in src / main / config ) in das erwartete Konfigurationsverzeichnis. Es gibt einige Doppelungen in diesem, weil Sie die Appassembler-Ausgaben kopieren, aber das hat mich nicht wirklich gestört.
Was Sie nach dem Ausführen des Assembly-Plugins haben, ist, dass Ihr Verzeichnis bin, repo und config alle Peer-Verzeichnisse unter dem Assembly-Ausgabeverzeichnis sind. Sie können es so konfigurieren, dass es eine andere Struktur hat, wenn Sie möchten, ich wollte nur, dass meine Appassembler-Struktur spiegelt.
Das Schöne ist, dass Sie das Assembly-Plugin auch so konfigurieren können, dass es Ihre Binärdateien in ausführbare Dateien umwandelt, was ich nicht mit Appassembler machen konnte. Und wenn Sie dann appassembler binden: assemble und assembly: einzelne Ziele in die Paketphase, alles, was Sie tun müssen, ist 'mvn package', und es fügt alles zusammen.
Für Leute, die in letzter Zeit dazugekommen sind, gibt es seit der Version 1.1 des Application Assembler Plugins die optionalen Parameter Konfigurations-Source-Verzeichnis und copyConfigurationDirectory . Sie finden sie in einem Beispiel POM.xml-Extrakt unten:
%Vor%Weitere Informationen finden Sie hier
Ich weiß nicht, ob ich dich richtig verstehe. Aber was ich in der Vergangenheit für ein Projekt getan habe, bei dem ich Konfigurationsdateien kopieren musste, ist das Maven AntRun-Plugin . Was ich getan habe, ist das Ausführen des Plugins in der Prozess-Ressourcen-Phase und das Kopieren meiner Konfigurationsdateien in das angegebene Verzeichnis unter Verwendung des Ant-Kopier-Tasks. Das Assembler-Plugin wird in der Paketphase ausgeführt, sodass es Ihre Konfigurationsdateien abholen sollte, wenn Sie es an der richtigen Stelle platzieren. Hoffe, das beantwortet deine Frage ein wenig.
Ich habe nach einer Antwort auf die Frage gesucht, die ich für Ihre oder zumindest eine sehr ähnliche Frage halte. Mit Maven können Sie Verzeichnisse für Ressourcen mit dem maven-resources-plugin angeben. Ich habe ein paar Konfigurationsdateien in einem meiner Ressourcenverzeichnisse. Ich habe festgestellt, dass durch das Einfügen von Kopien dieser Dateien in das von Ihnen erwähnte Verzeichnis etc / (das sich am Anfang von CLASSPATH befindet) die Werte in diesen Dateien zur Laufzeit geändert werden können. Ich wollte dann das etc / Verzeichnis standardmäßig mit Kopien von allem aus meinem Ressourcenverzeichnis erstellen lassen. Das Ziel copy-resources des maven-resources-plugins hat mir erlaubt das zu tun. Diese Strophe aus Beispielen & gt; Kopieren Sie Ressourcen in der linken Seitenleiste (ich bin auf 2 Links in diesem Beitrag beschränkt), was hat es für mich getan:
%Vor%