webentwicklung-frage-antwort-db.com.de

Abrufen der Maven-Projektversion und der Artefakt-ID von pom während der Ausführung in Eclipse

Ich habe nachgeschlagen, wie ich den Anwendungsnamen (Artefakt-ID) und die Version von maven pom oder manifest erhalten kann, als ich auf diese Frage gestoßen bin Maven-Artefakt-Version zur Laufzeit abrufen .

Das Obige funktioniert für mich, wenn ich das Projekt paketiere, aber ich kann nichts zum Laufen bringen, wenn ich versuche, das Programm mit Eclipse auszuführen. Ich habe versucht, die .properties-Methode beim Erstellen zu verwenden, da ich davon ausgegangen habe, dass dies nicht paketabhängig ist, aber ich immer noch kein Ergebnis erhalte. Wenn jemand eine Idee oder Lösung für dieses Problem hat, wäre er sehr dankbar.

Mein letzter Versuch ist unten. Dies verwendet das Manifest, wenn es gepackt ist (was funktioniert) und versucht, die .properties-Datei abzurufen, wenn es in Eclipse ausgeführt wird.

String appVersion = getClass().getPackage().getImplementationVersion();
    if(appVersion == null || "".equals(appVersion)) {
        appVersion = Glob.getString(appVersion);
        if(appVersion == null || "".equals(appVersion)) {
            System.exit(0);
        }
    }
27
swhite

Erstellen Sie eine Eigenschaftendatei

src/main/resources/project.properties

mit dem unten stehenden Inhalt

version=${project.version}
artifactId=${project.artifactId}

Schalten Sie jetzt Maven Resource Filter ein

  <resource>
    <directory>src/main/resources</directory>
    <filtering>true</filtering>
  </resource>

damit diese Datei in verarbeitet wird

target/classes/project.properties

mit ähnlichem Inhalt

version=1.5
artifactId=my-artifact

Jetzt können Sie diese Eigenschaftendatei lesen, um zu ermitteln, was Sie möchten, und dies sollte jedes Mal funktionieren.

final Properties properties = new Properties();
properties.load(this.getClassLoader().getResourceAsStream("project.properties"));
System.out.println(properties.getProperty("version"));
System.out.println(properties.getProperty("artifactId"));
74
coderplus