Gewusst wie: überschreiben der Datei mit den Eigenschaften Wert über Kommandozeilen-Argumente?

Ich habe eine property-Datei, die wie folgt ist -

hostName=machineA.domain.host.com
emailFrom=tester@host.com
emailTo=world@host.com
emailCc=hello@host.com

Und lese ich jetzt die oben genannten property-Datei aus meinem Java-Programm -

public class FileReaderTask {
    private static String hostName;
    private static String emailFrom;
    private static String emailTo;
    private static String emailCc;

    private static final String configFileName = "config.properties";
    private static final Properties prop = new Properties();

    public static void main(String[] args) {
        readConfig(arguments);
    }

    private static void readConfig(String[] args) throws FileNotFoundException, IOException {
        if (!TestUtils.isEmpty(args) && args.length != 0) {
            prop.load(new FileInputStream(args[0]));
        } else {
            prop.load(FileReaderTask.class.getClassLoader().getResourceAsStream(configFileName));
        }

        hostName = prop.getProperty("hostName").trim();         
        emailFrom = prop.getProperty("emailFrom").trim();
        emailTo = prop.getProperty("emailTo").trim();
        emailCc = prop.getProperty("emailCc").trim();
    }
}

Meisten der Zeit, ich werde mit meinem oben genannten Programm über die Befehlszeile als runnable jar wie diese -

java -jar abc.jar config.properties

Meine Fragen sind -

  • Gibt es eine Möglichkeit, die wir außer Kraft setzen können, die oben genannten Attribute in der property-Datei über die Befehlszeile ohne Sie zu berühren Sie die Datei, wenn benötigt? Da will ich nicht ändern, meine config.Eigenschaften-Datei immer, wenn ich ändern müssen Attribute Wert? Ist dies möglich?

Sowas soll override-Wert für den Hostnamen in der Datei?

java -jar abc.jar config.properties hostName=machineB.domain.host.com
  • Und auch gibt es keine Möglichkeit zum hinzufügen von --help während der Ausführung der abc.jar können, erzählen Sie uns mehr darüber, wie Sie die jar-Datei und was bewirkt jede Eigenschaft bedeutet und wie Sie zu nutzen? Ich habe gesehen --help laufen, während die meisten C++ - executable-oder Unix-Zeug also nicht sicher, wie wir das tun können, die gleiche Sache in Java?

Benötige ich, um die Kommandozeilen-parser für diese in Java zu erreichen, die beiden Dinge?

  • Das ist, wenn Sie machen verwenden der String[] args variable übergeben public static void main Methode.
  • Vielen Dank für die Anregung. Können Sie ein Beispiel geben, wie ich dies tun? Ich muss auch hinzufügen --help Funktionalität, durch die jemand bekommen kann, zu wissen, wie zum ausführen dieser jar und was sind die verschiedenen config-Parameter und was bedeuten Sie im Allgemeinen? Wir benutzen müssen, um alle Kommandozeilen-parser wie JCommander?
  • Sie könnten dies manuell tun, oder verwenden Sie eine Bibliothek, wie, dass. Die Entscheidung ist bis zu Ihnen (oder Ihrem team).
InformationsquelleAutor john | 2014-12-22
Schreibe einen Kommentar