Tôi có một tập tin bất động sản đó là như thế này -Cách ghi đè giá trị tệp thuộc tính thông qua đối số dòng lệnh?
hostName=machineA.domain.host.com
[email protected]
[email protected]
[email protected]
Và bây giờ tôi đang đọc các tập tin bất động sản trên từ chương trình Java của tôi như -
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();
}
}
Hầu hết thời gian, tôi sẽ được chạy chương trình trên của mình thông qua dòng lệnh như một jar Runnable như thế này -
java -jar abc.jar config.properties
câu hỏi của tôi là -
- Có cách nào chúng tôi có thể ghi đè các thuộc tính trên trong tệp thuộc tính thông qua dòng lệnh mà không cần chạm vào tệp nếu cần? Vì tôi không muốn sửa đổi tập tin config.properties của tôi luôn luôn bất cứ khi nào tôi cần phải thay đổi bất kỳ giá trị thuộc tính? Đây có phải là có thể làm gì?
Điều gì đó như thế này sẽ ghi đè giá trị hostName trong tệp?
java -jar abc.jar config.properties hostName=machineB.domain.host.com
- Và cũng có thể, là có cách nào để thêm
--help
khi chạy có thể cho chúng tôi biết thêm về làm thế nào để chạy các tập tin jar và những gì hiện mỗi phương tiện tài sản và làm thế nào để sử dụng chúng? Tôi đã thấy--help
trong khi chạy hầu hết các công cụ thực thi C++ hoặc Unix để không chắc chắn làm thế nào chúng ta có thể làm điều tương tự trong Java?
Tôi có cần sử dụng trình phân tích cú pháp CommandLine cho điều này trong Java để đạt được cả hai thứ?
Đó là khi bạn sử dụng biến 'String [] args' được chuyển sang phương thức' public static void main'. –
@LuiggiMendoza Cảm ơn bạn đã đề xuất. Bạn có thể cung cấp một ví dụ làm thế nào tôi sẽ làm điều này? Tôi cũng cần thêm chức năng '--help' mà bất cứ ai cũng có thể biết cách chạy jar này và các tham số cấu hình khác nhau là gì và chúng có ý nghĩa gì? Chúng ta có cần sử dụng bất kỳ trình phân tích cú pháp dòng lệnh nào như JCommander không? – john
Bạn có thể thực hiện thủ công hoặc sử dụng thư viện như vậy. Quyết định này tùy thuộc vào bạn (hoặc nhóm của bạn). –