Ho un file di proprietà che è come questo -Come sovrascrivere il valore del file delle proprietà tramite gli argomenti della riga di comando?
hostName=machineA.domain.host.com
[email protected]
[email protected]
[email protected]
E ora sto leggendo il file di proprietà di cui sopra dal mio programma Java come -
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();
}
}
maggior parte del tempo, mi sarà in esecuzione il mio programma di cui sopra attraverso la linea di comando come un barattolo eseguibile come questo -
java -jar abc.jar config.properties
Le mie domande sono -
- Esiste un modo per sovrascrivere gli attributi precedenti nel file di proprietà tramite la riga di comando senza toccare il file se necessario? Dal momento che non voglio modificare il mio file config.properties sempre ogni volta che ho bisogno di modificare qualsiasi valore di attributi? È possibile farlo?
Qualcosa di simile dovrebbe sovrascrivere il valore hostName nel file?
java -jar abc.jar config.properties hostName=machineB.domain.host.com
- E inoltre, c'è un modo per aggiungere
--help
durante l'esecuzione del che può dirci di più su come eseguire il file jar e che cosa ogni mezzo di proprietà e come usarli? Ho visto--help
mentre eseguivo la maggior parte dell'eseguibile C++ o roba Unix quindi non sono sicuro di come possiamo fare la stessa cosa in Java?
Ho bisogno di utilizzare parser CommandLine per questo in Java per ottenere entrambe le cose?
Questo è quando si fanno uso del 'String [] args' variabile passata a' metodo main' public static void. –
@LuiggiMendoza Grazie per il suggerimento. Puoi fornire un esempio come farei questo? Devo anche aggiungere la funzionalità '--help' con cui chiunque può sapere come eseguire questo jar e quali sono i vari parametri di configurazione e cosa significano in generale? Dobbiamo usare qualche parser da riga di comando come JCommander? – john
Puoi farlo manualmente o usare una libreria del genere. La decisione spetta a te (o alla tua squadra). –