? ? ? ? 最近產(chǎn)品需要預(yù)研一個(gè)小功能,開始后在本地開發(fā)測試好之后,需要打成jar提供出去,今天弄完了,決定把這個(gè)步驟記錄下來,便于以后輕車熟路。
? ? ? ? 打成jar要有mian方法的入口,所以我們在代碼中需要定義一個(gè)main方法,然后通過這個(gè)main方法調(diào)用我們的核心邏輯代碼。下面是我的代碼示例:
public static void main(String[] args)
{
System.out.println("啟動(dòng)成功");
JSONObject json = new JSONObject();
//要處理的文件路徑
json.put("filePath",args[0]);
//休眠秒數(shù)的因子
json.put("millisecond",args[1]);
//輸出文件的路徑
json.put("writeFilePath",args[2]);
//輸出文件的名稱(需提前創(chuàng)建)
json.put("writeFileName",args[3]);
//打印參數(shù)
System.out.println(json.toJSONString());
//調(diào)用核心處理方法
getData(json);
}
核心代碼:
/**
* 獲取數(shù)據(jù)
* @param params
* @return
*/
private static JSONObject getData(@RequestBody JSONObject params)
{
JSONObject ret = new JSONObject();
ret.put("code","1");
ret.put("message","執(zhí)行成功");
//String filePath = PropertiesUtil.getProp(PropertiesUtil.FILE_SYSTEM, "splib.barcode.path") + "/sp_barcode_200.txt";
String filePath = params.getString("filePath");
Long milliseconds = StringUtil.toLong(params.get("millisecond"));
List<String> result = new ArrayList<>();
try (FileReader fileReader = new FileReader(filePath);
BufferedReader bufferedReader = new BufferedReader(fileReader)) {
String line;
while ((line = bufferedReader.readLine()) != null) {
// 在這里根據(jù)實(shí)際需求對每一行進(jìn)行處理
if(StringUtil.isNotEmpty(line)){
int random = (int) (Math.random() * StringUtil.toInteger(milliseconds));
logger.info("休眠{}毫秒再執(zhí)行",random);
System.out.println(String.format("休眠%s毫秒再執(zhí)行>>>>>>>",random));
Thread.sleep(random);
String barcode = line.replace(",", "");
String s1 = HttpUtils.httpClientGet(String.format(GDS_API_URL,barcode), 4000);
System.out.println("s1>>>>>>>" + s1);
String s2 = HttpUtils.httpClientGet(String.format("%s%s",GDS_URL,barcode), 4000);
System.out.println("s2>>>>>>>" + s2);
result.add(s2);
}
}
} catch (IOException e) {
e.printStackTrace();
logger.error("io異常:",e);
ret.put("code","0");
ret.put("message","執(zhí)行失敗");
}catch(InterruptedException e){
e.printStackTrace();
logger.error("InterruptedException異常:",e);
ret.put("code","0");
ret.put("message","執(zhí)行失敗");
}
if(CollectionUtil.isNotEmpty(result)){
String code = writeTxt(params.getString("writeFilePath"), params.getString("writeFileName"), result);
if(!"1".equals(code)){
ret.put("code","0");
ret.put("message","寫文件失敗");
}
}
return ret;
}
/**
* 寫文件
*/
private static String writeTxt(String filePath,String fileName,List<String> list){
// 指定文件路徑和文件名
/*String filePath = "D:";
String fileName = "sp_barcode_test.txt";*/
// 創(chuàng)建BufferedWriter對象
try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath + "/" + fileName))) {
// 將List<String>中的每個(gè)元素寫入文件中
for (String str : list) {
writer.write(str);
writer.newLine(); // 寫入換行符
}
System.out.println("文件已成功寫入!");
logger.info("文件已成功寫入");
return "1";
} catch (IOException e) {
System.out.println("寫入文件時(shí)出現(xiàn)錯(cuò)誤:" + e.getMessage());
logger.error("寫入文件時(shí)出現(xiàn)錯(cuò)誤:",e);
return "0";
}
}
上面是我的代碼示例,只是給大家一個(gè)演示,不必關(guān)心里面的功能。下面來演示如何把該文件所在項(xiàng)目打成jar包。
1.點(diǎn)擊 File ==> Project Structure ==> Artifacts ==> 點(diǎn)擊加號 ==> 選擇JAR ==> 選擇From modules with dependencies
?我們需要把所依賴的其他項(xiàng)目包都打進(jìn)來的話,按下圖所示
? 點(diǎn)擊ok===>apply===>繼續(xù)ok
選擇Build===>build artifact,找到自己的jar包那條目錄
先點(diǎn)擊 clear 進(jìn)行清除,然后再點(diǎn)擊 Build 進(jìn)行構(gòu)建,就可以打成一個(gè)jar包了,就可以在我們設(shè)置的輸出目錄看到對應(yīng)的jar包了
我此處把這個(gè)目錄壓縮成.zip包,便于上傳到服務(wù)器。
連上服務(wù)器,建好對應(yīng)項(xiàng)目的文件夾(注意目錄權(quán)限),rz命令上傳zip包,unzip解壓
由于我的main方法中需要傳四個(gè)參數(shù),不然程序運(yùn)行會報(bào)錯(cuò),所以啟動(dòng)的時(shí)候,需要在命令行傳上所需的參數(shù):文章來源:http://www.zghlxwxcb.cn/news/detail-712680.html
java -jar spcenter.jar \/home\/spcenter\/spcenter_jar\/sp_barcode.txt 10000 \/home\/spcenter\/spcenter_jar test.txt
說明:
要處理的文件:\/home\/spcenter\/spcenter_jar\/sp_barcode.txt
隨機(jī)數(shù)的參數(shù):10000
輸出文件目錄:\/home\/spcenter\/spcenter_jar
輸出文件名稱:test.txt
到這就搞定了,完工。功能不復(fù)雜,但是涉及的知識點(diǎn)挺多的,希望能幫助到大家文章來源地址http://www.zghlxwxcb.cn/news/detail-712680.html
到了這里,關(guān)于idea把項(xiàng)目打成jar包步驟詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!