it-swarm.com.de

So fügen Sie eine Konfigurationsdatei in den Ordner "META-INF / services" einer JAR mit Maven ein

Ich arbeite an einem Java -Projekt in Eclipse, das mit Maven erstellt wurde. Ich verwende recycelten Code aus einem älteren Projekt, und eine dieser Klassen sucht nach einer Datei im " Der Ordner "META-INF/services" der JAR mit einem bestimmten Namen analysiert dann den Text dieser Datei. In diesem speziellen Beispiel sucht er nach einer Datei mit dem Namen einer Java Schnittstelle, Dann wird der Klassenname der Implementierung aus der Datei geholt.

Ich versuche also im Grunde, Folgendes zu tun: Füge eine Datei mit einem Dateinamen (X) und einer Textzeile (Y) im Ordner "META-INF/services" der JAR hinz. Ich vermute, dies sollte mit Maven geschehen, möglicherweise durch Angabe eines Attributs in der POM-Datei, aber meine Recherche hat nichts ergeben. Ich weiß, dass Sie keine META-Dateien hart codieren oder manuell ausschreiben sollen, daher bin ich mir nicht sicher, was ich hier tun soll.

Danke im Voraus.

65
Matt Vukas

Neuen Quellordner erstellen mit dem Pfad src/main/resources, dann erstelle dein META-INF/services Ordner dort und legen Sie in Ihrer FQCN-Datei. Dies sollte sie automatisch in die JAR-Datei kopieren. So haben Sie:

Project
| src
| | main
|   | Java
|     | [your source code]
|   | resources
|     | META-INF
|       | services
|         | [your service files]

Beachten Sie, dass dies auch für Gradle-Projekte mit den Standardquellensätzen gilt.

102
Brian

Standardmäßig sucht Maven nach Ressourcen unter:

src/main/resources

Also leg es an

src/main/resources/META-INF/services
17
Puce

Alternativ können Sie Ressourcenverzeichnisse manuell die POM-Datei angeben, wenn Ihr Projekt keine Standardverzeichnisstruktur verwendet (oder Sie einfach alternative Ressourcenverzeichnisse haben möchten).

Zum Beispiel, wenn Ihr META-INF/services befindet sich in einem Ordner mit dem Namen resources, der sich im Stammverzeichnis Ihres Projektverzeichnisses befindet. Geben Sie dies folgendermaßen an:

<project>
...
  <build>
    ...
    <resources>
      <resource>
        <directory>resources</directory>
      </resource>
    </resources>
    ...
  </build>
  ...
</project>

Hiermit können Sie mehrere Verzeichnisse angeben, indem Sie mehrere <resource> Elemente.