У меня есть файл свойств, который, как это -Как переопределить значение файла свойств через аргументы командной строки?
hostName=machineA.domain.host.com
[email protected]
[email protected]
[email protected]
А теперь я читаю вышеуказанный файл свойств из моей программы Java, как -
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();
}
}
Большую часть времени, я буду работать моя выше программа, с помощью командной строки, как работоспособная банка, как это -
java -jar abc.jar config.properties
Моих вопросов -
- Можно ли переопределить вышеуказанные атрибуты в файле свойств через командную строку, не касаясь файла, если это необходимо? Поскольку я не хочу изменять файл config.properties всегда, когда мне нужно изменить значение атрибутов? Возможно ли это сделать?
Что-то вроде этого должно переопределить значение hostName в файле?
java -jar abc.jar config.properties hostName=machineB.domain.host.com
- А также, есть ли способ, чтобы добавить
--help
во время работы , что может рассказать нам больше о том, как запустить файл банку и что делает каждое средство собственности и как их использовать? Я видел--help
во время работы большей части исполняемого файла C++ или Unix, поэтому не уверен, как мы можем сделать то же самое в Java?
Нужно ли использовать синтаксический анализатор CommandLine для этого в Java для достижения обеих вещей?
Это когда вы используете из 'String [] args' переменного передается' статического ничтожного метода открытой main'. –
@LuiggiMendoza Спасибо за предложение. Можете ли вы привести пример, как бы я это сделал? Мне также нужно добавить функциональность '--help', с помощью которой любой может узнать, как запустить эту банку и какие параметры конфигурации и что они означают в целом? Нужно ли нам использовать любой синтаксический анализатор командной строки, например JCommander? – john
Вы можете сделать это вручную или использовать такую библиотеку. Решение зависит от вас (или вашей команды). –