mam pliku właściwość, która jest tak -Jak przesłonić wartość pliku właściwości za pomocą argumentów wiersza poleceń?
hostName=machineA.domain.host.com
[email protected]
[email protected]
[email protected]
A teraz czytam powyższy plik właściwości z mojego programu Java as -
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();
}
}
Przez większość czasu, to będzie działać moja powyższy program poprzez linię poleceń jako runnable słoik jak ta -
java -jar abc.jar config.properties
Moje pytania są -
- Czy istnieje sposób na zastąpienie powyższych atrybutów w pliku właściwości za pomocą wiersza poleceń bez dotykania pliku, jeśli jest to konieczne? Ponieważ nie chcę modyfikować mojego pliku config.properties zawsze, gdy potrzebuję zmienić dowolną wartość atrybutu? Czy to się da zrobić?
Coś takiego powinno zastąpić wartość hostName w pliku?
java -jar abc.jar config.properties hostName=machineB.domain.host.com
- A także, czy jest jakiś sposób, aby dodać
--help
podczas pracy że może nam powiedzieć więcej o tym, jak uruchomić plik jar i co robi każdy oznacza majątek i jak z nich korzystać? Widziałem--help
podczas uruchamiania większości plików wykonywalnych C++ lub Uniksa, więc nie wiem, jak możemy zrobić to samo w Javie?
Czy muszę użyć parsera CommandLine dla tego w Javie, aby osiągnąć obie rzeczy?
To wtedy skorzystać z następujących 'String [] args' przekazany do' public static void metoda main' zmiennej. –
@LuiggiMendoza Dzięki za sugestię. Czy możesz podać przykład jak to zrobić? Muszę też dodać funkcjonalność '--help', dzięki której każdy może dowiedzieć się, jak uruchomić ten słoik i jakie są różne parametry konfiguracyjne i co one oznaczają w ogóle? Czy potrzebujemy użyć dowolnego parsera wiersza poleceń, takiego jak JCommander? – john
Można to zrobić ręcznie lub użyć takiej biblioteki. Decyzja należy do ciebie (lub twojego zespołu). –