如何將java程式打包成帶引數的jar檔案
阿新 • • 發佈:2019-01-03
這裡我們通過Apache Commons CLI來完成目標功能,廢話不多說直接上程式碼
所需的maven依賴
<dependency>
<groupId>commons-cli</groupId>
<artifactId>commons-cli</artifactId>
<version>1.4</version>
</dependency>
這裡我們貼出主類程式碼
Options opts = new Options();
opts.addOption ("h", false,"help");
Option portOption = OptionBuilder.withArgName("args")
.withLongOpt("port").hasArg()
.create("p");
opts.addOption(portOption);
Option fileOption = OptionBuilder.withArgName("args")
.withLongOpt("file").hasArg ()
.create("f");
opts.addOption(fileOption);
Option kafkaHostOption = OptionBuilder.withArgName("args")
.withLongOpt("kafkaHost").hasArg()
.create("kH");
opts.addOption(kafkaHostOption);
Option kafkaPortOption = OptionBuilder.withArgName ("args")
.withLongOpt("kafkaPort").hasArg()
.create("kP");
opts.addOption(kafkaPortOption);
Option kafkaTopicOption = OptionBuilder.withArgName("args")
.withLongOpt("kafkaTopic").hasArg()
.create("kT");
opts.addOption(kafkaTopicOption);
BasicParser parser = new BasicParser();
CommandLine cl;
try {
cl = parser.parse(opts, args);
if (cl.getOptions().length > 0) {
if (cl.hasOption('h')) {
HelpFormatter hf = new HelpFormatter();
hf.printHelp("Options", opts);
} else {
//String ip = cl.getOptionValue("i");
String port = cl.getOptionValue("p");
String file = cl.getOptionValue("f");
String kafkaHost = cl.getOptionValue("kH");
String kafkaPort = cl.getOptionValue("kP");
String kafkaTopic = cl.getOptionValue("kT");
GetInfo getInfo = new GetInfo();
getInfo.getAndZgrab(file,port,kafkaHost,kafkaPort,kafkaTopic);
}
} else {
System.out.println("引數為空");
}
} catch (Exception e) {
e.printStackTrace();
}
記得將上述程式碼放到main函式中,將解析args[],這樣將程式打包成jar檔案後就可以實現我們的需求了。
執行命令:
java -jar jarName.jar -f filename -p port - kH kafkaHost -kP kafkaPort -kT kafkaTopic
如果忘記了都需要傳遞什麼引數,可以通過 java -jar jarName.jar -h 獲取引數內容