Ich möchte ServiceLoader zwischen verschiedenen Modulen in einem Maven-Projekt verwenden. Ich habe ein Elternmodul namens iMage. Im übergeordneten Modul gibt es ein Modul mit dem Namen jmjrst.main und es hat eine öffentliche abstrakte Klasse namens 'JmjrstPlugin'.ServiceLoader und META-INF/Dienste Generator zwischen verschiedenen Modulen in Maven?
Dann gibt es ein weiteres Modul namens prizm-plugin mit folgender Klasse: public class HelloWorldPlugin erweitert JmjrstPlugin {...}. Ich habe jmjrst.main als Abhängigkeit zu prizm-plugin und umgekehrt hinzugefügt.
Um ServiceLoader zu verwenden, wollte ich META-INF/services generator verwenden. Ich fügte hinzu, die auf die pom.xml von prizm-Plugin folgende Zeile:
<dependency>
<groupId>org.kohsuke.metainf-services</groupId>
<artifactId>metainf-services</artifactId>
<version>1.1</version>
<optional>true</optional>
</dependency>
und die Klasse HelloWorldPlugin beginnt wie folgt aus:
@MetaInfServices(JmjrstPlugin.class)
public class HelloWorldPlugin extends JmjrstPlugin{ ... }
Auf der Website auf META-INF/services generator geht: „Wenn Sie javac verwenden In JavaSE6 werden META-INF/services/* -Dateien automatisch generiert. Es sind keine zusätzlichen Compiler-Switches erforderlich. Diese Bibliothek behandelt auch die inkrementelle Kompilierung korrekt. "
Bei mir wird nichts generiert. Kann mir jemand dabei helfen?
da ist nur ein Basistyp drin. aber ich habe es so versucht: @MetaInfServices (JmjrstPlugin.class) öffentliche Klasse HelloWorldPlugin erweitert JmjrstPlugin {...} noch jetzt Erfolg –