2017-11-20 3 views
0

Ich bin neu in maven und Java. Ich arbeite an einer großen Codebasis, die das Spring Web Framework verwendet. Es mag sein, dass ich die Grundlagen vermisse, aber ich habe mein Bestes getan, um alle Grundlagen der Projektdurchführung zu besprechen.
Für die Funktion Ich baue, habe ich Properties-Dateien, die ich früher in src/main/resources in mein Maven-Projekt gerettet hatte und wurde von meiner Klasse mit dem Namen ReaderClass mit dieser AussageWie lesen Properties-Datei von einem externen jar in Maven Projekt

ReaderClass.class.getResourceasStream("xyz.properties");

Jetzt lesen Ich habe diese Dateien in ein separates Projekt ausgelagert und daraus ein Jar erstellt. Dieses Jar hat nur die Eigenschaftendateien in einem Ordner namens resource.
Ich habe diese JAR-Datei als Abhängigkeit in der IntelliJ IDE hinzugefügt und mag die Eigenschaften von Dateien aus diesem Glas lesen. Wäre es eine .class-Datei, die ich eine Import-Anweisung in ReaderClass verwenden würde, aber wie würde ich Properties-Dateien lesen?

WEITERE INFORMATIONEN

Auch bin ich nicht sicher, ob dies ist ein Problem, aber IntelliJ nicht wirklich das Glas in den Außen Bibliotheken Tab zeigen aber mein Glas im Projekt in der Registerkarte Abhängigkeiten der Module Abschnitt nicht zeigen Struktur. Ich wollte sicherstellen, dass dies die Lösung nicht beeinflusst.

+0

Mögliche doppelte: https://stackoverflow.com/questions/33821074/read-properties-file-in-multi-module-project Aber wenn man das Glas als externe Bibliothek direkt in IntelliJ hinzuzufügen, könnte es POM nicht aktualisieren. Ich würde empfehlen, den umgekehrten Weg zu gehen: Aktualisieren Sie zuerst das POM und laden Sie es in der IDE neu. – Daniel

+0

Ich füge es zuerst der IDE hinzu, weil ich es testen möchte. Wenn ich mein Artefakt in das zentrale Maven-Repository hochlade, verwenden wir es auf nexus .. Ich füge die Abhängigkeit zu pom.xml hinzu. Die Lösung, die in dem von Ihnen freigegebenen Link angegeben wird, bezieht sich auf das Hinzufügen einer Klasse, nur um den Klassenlader zu verwenden. Ich würde es vorziehen, das nicht zu tun –

+0

Ok, fair genug. Versuchen Sie 'ReaderClass.class.getClassLoader() getResourceAsStream ("xyz.properties");.' – Daniel

Antwort

0

Es gibt zahlreiche Möglichkeiten, dies zu tun.

Ihre xyz.properties Datei sieht wie folgt aus der Annahme:

a=b 
y=z 
mykey=myvalue 

Mit java.util.ResourceBundle

Wenn Sie rund um die gelesenen Daten als Properties Objekt nicht passieren müssen, ist dies der einfachste Weg.

ResourceBundle rb = ResourceBundle.getBundle("xyz"); 
System.out.println("a=" + rb.getString("a")); 

Mit java.util.Properties

Ein bisschen mehr Arbeit und einige Kessel-Platte, sondern erreicht die gleiche Sache.

Properties p = new Properties(); 
try (InputStream is = getClass().getClassLoader().getResourceAsStream("xyz.properties")) { 
    p.load(is); 
} 
catch (IOException e) { 
    // Handle as appropriately. 
} 
System.out.println("mykey=" + p.getProperty("mykey")); 
2

Wenn Sie Frühling verwenden, versuchen

@Value("${property.name}") 
private String property; 

Eigenschaften von Ressourcen Ordner zu lesen.

+0

Ich muss die Eigenschaftendatei zu einem java.util.Properties-Objekt laden –

Verwandte Themen