• idea把项目打成jar包步骤详解


            最近产品需要预研一个小功能,开始后在本地开发测试好之后,需要打成jar提供出去,今天弄完了,决定把这个步骤记录下来,便于以后轻车熟路。

            打成jar要有mian方法的入口,所以我们在代码中需要定义一个main方法,然后通过这个main方法调用我们的核心逻辑代码。下面是我的代码示例:

    1. public static void main(String[] args)
    2. {
    3. System.out.println("启动成功");
    4. JSONObject json = new JSONObject();
    5. //要处理的文件路径
    6. json.put("filePath",args[0]);
    7. //休眠秒数的因子
    8. json.put("millisecond",args[1]);
    9. //输出文件的路径
    10. json.put("writeFilePath",args[2]);
    11. //输出文件的名称(需提前创建)
    12. json.put("writeFileName",args[3]);
    13. //打印参数
    14. System.out.println(json.toJSONString());
    15. //调用核心处理方法
    16. getData(json);
    17. }

    核心代码:

    1. /**
    2. * 获取数据
    3. * @param params
    4. * @return
    5. */
    6. private static JSONObject getData(@RequestBody JSONObject params)
    7. {
    8. JSONObject ret = new JSONObject();
    9. ret.put("code","1");
    10. ret.put("message","执行成功");
    11. //String filePath = PropertiesUtil.getProp(PropertiesUtil.FILE_SYSTEM, "splib.barcode.path") + "/sp_barcode_200.txt";
    12. String filePath = params.getString("filePath");
    13. Long milliseconds = StringUtil.toLong(params.get("millisecond"));
    14. List result = new ArrayList<>();
    15. try (FileReader fileReader = new FileReader(filePath);
    16. BufferedReader bufferedReader = new BufferedReader(fileReader)) {
    17. String line;
    18. while ((line = bufferedReader.readLine()) != null) {
    19. // 在这里根据实际需求对每一行进行处理
    20. if(StringUtil.isNotEmpty(line)){
    21. int random = (int) (Math.random() * StringUtil.toInteger(milliseconds));
    22. logger.info("休眠{}毫秒再执行",random);
    23. System.out.println(String.format("休眠%s毫秒再执行>>>>>>>",random));
    24. Thread.sleep(random);
    25. String barcode = line.replace(",", "");
    26. String s1 = HttpUtils.httpClientGet(String.format(GDS_API_URL,barcode), 4000);
    27. System.out.println("s1>>>>>>>" + s1);
    28. String s2 = HttpUtils.httpClientGet(String.format("%s%s",GDS_URL,barcode), 4000);
    29. System.out.println("s2>>>>>>>" + s2);
    30. result.add(s2);
    31. }
    32. }
    33. } catch (IOException e) {
    34. e.printStackTrace();
    35. logger.error("io异常:",e);
    36. ret.put("code","0");
    37. ret.put("message","执行失败");
    38. }catch(InterruptedException e){
    39. e.printStackTrace();
    40. logger.error("InterruptedException异常:",e);
    41. ret.put("code","0");
    42. ret.put("message","执行失败");
    43. }
    44. if(CollectionUtil.isNotEmpty(result)){
    45. String code = writeTxt(params.getString("writeFilePath"), params.getString("writeFileName"), result);
    46. if(!"1".equals(code)){
    47. ret.put("code","0");
    48. ret.put("message","写文件失败");
    49. }
    50. }
    51. return ret;
    52. }
    53. /**
    54. * 写文件
    55. */
    56. private static String writeTxt(String filePath,String fileName,List list){
    57. // 指定文件路径和文件名
    58. /*String filePath = "D:";
    59. String fileName = "sp_barcode_test.txt";*/
    60. // 创建BufferedWriter对象
    61. try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath + "/" + fileName))) {
    62. // 将List中的每个元素写入文件中
    63. for (String str : list) {
    64. writer.write(str);
    65. writer.newLine(); // 写入换行符
    66. }
    67. System.out.println("文件已成功写入!");
    68. logger.info("文件已成功写入");
    69. return "1";
    70. } catch (IOException e) {
    71. System.out.println("写入文件时出现错误:" + e.getMessage());
    72. logger.error("写入文件时出现错误:",e);
    73. return "0";
    74. }
    75. }

    上面是我的代码示例,只是给大家一个演示,不必关心里面的功能。下面来演示如何把该文件所在项目打成jar包。

    1.点击 File ==> Project Structure ==> Artifacts ==> 点击加号 ==> 选择JAR ==> 选择From modules with dependencies

     我们需要把所依赖的其他项目包都打进来的话,按下图所示

      点击ok===>apply===>继续ok

    选择Build===>build artifact,找到自己的jar包那条目录

    先点击 clear 进行清除,然后再点击 Build 进行构建,就可以打成一个jar包了,就可以在我们设置的输出目录看到对应的jar包了

    我此处把这个目录压缩成.zip包,便于上传到服务器。

    连上服务器,建好对应项目的文件夹(注意目录权限),rz命令上传zip包,unzip解压

    由于我的main方法中需要传四个参数,不然程序运行会报错,所以启动的时候,需要在命令行传上所需的参数:

    1. java -jar spcenter.jar \/home\/spcenter\/spcenter_jar\/sp_barcode.txt 10000 \/home\/spcenter\/spcenter_jar test.txt
    2. 说明:
    3. 要处理的文件:\/home\/spcenter\/spcenter_jar\/sp_barcode.txt
    4. 随机数的参数:10000
    5. 输出文件目录:\/home\/spcenter\/spcenter_jar
    6. 输出文件名称:test.txt

    到这就搞定了,完工。功能不复杂,但是涉及的知识点挺多的,希望能帮助到大家

  • 相关阅读:
    渗透测试 ( 5 ) --- 扫描之王 nmap、渗透测试工具实战技巧合集
    conda安装使用jupyterlab注意事项
    Flutter 处理异步操作并根据异步操作状态动态构建界面的方法FutureBuilder
    企业知识库管理系统怎么做?
    C++中的函数
    linux常用命令
    Apache HTTPD 漏洞复现
    Python基础入门篇【20】--python中的流程控制之循环控制 :while循环及循环扩展内容
    【漏洞复现-spring-目录遍历】vulfocus/spring-cve_2020_5410
    一篇文章搞懂富人的内在逻辑|普通人如何改变命运?【财富02】
  • 原文地址:https://blog.csdn.net/cainiaobulan/article/details/132889194