【名詞解釋】
CLI:Command Line Interface 命令行界面 典型如Linux控制台
GUI:Graphical User Interface 圖形界面 典型如BS/CS程序
【工具】
Idea和一台能聯網的電腦
【主要步驟】
1.用Idea創建一個Maven項目。
2.在pom里加入以下依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <version>2.6.4</version> </dependency>
注意2.6.4不是必須的,您可以根據自己m2目錄中的spring-boot-starter版本來定。當然能聯網就省卻很多沒必要的煩惱了。
3.制作一個啟動類如下:
package com.hy; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class MyApplication implements CommandLineRunner { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } @Override public void run(String... args) throws Exception { System.out.println("Hello cli"); } }
這個類一要加入SpringBootApplication注解,二要實現CommandLineRunner接口。
4.此時就可以啟動項目了,讓我們先看看效果:
C:\Java17\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.3.2\lib\idea_rt.jar=55819:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.3.2\bin" -Dfile.encoding=UTF-8 -classpath C:\Users\ufo\IdeaProjects\SpringbootCli\target\classes;C:\Users\ufo\.m2\repository\org\springframework\boot\spring-boot-starter\2.6.4\spring-boot-starter-2.6.4.jar;C:\Users\ufo\.m2\repository\org\springframework\boot\spring-boot\2.6.4\spring-boot-2.6.4.jar;C:\Users\ufo\.m2\repository\org\springframework\spring-context\5.3.16\spring-context-5.3.16.jar;C:\Users\ufo\.m2\repository\org\springframework\spring-aop\5.3.16\spring-aop-5.3.16.jar;C:\Users\ufo\.m2\repository\org\springframework\spring-beans\5.3.16\spring-beans-5.3.16.jar;C:\Users\ufo\.m2\repository\org\springframework\spring-expression\5.3.16\spring-expression-5.3.16.jar;C:\Users\ufo\.m2\repository\org\springframework\boot\spring-boot-autoconfigure\2.6.4\spring-boot-autoconfigure-2.6.4.jar;C:\Users\ufo\.m2\repository\org\springframework\boot\spring-boot-starter-logging\2.6.4\spring-boot-starter-logging-2.6.4.jar;C:\Users\ufo\.m2\repository\ch\qos\logback\logback-classic\1.2.10\logback-classic-1.2.10.jar;C:\Users\ufo\.m2\repository\ch\qos\logback\logback-core\1.2.10\logback-core-1.2.10.jar;C:\Users\ufo\.m2\repository\org\slf4j\slf4j-api\1.7.32\slf4j-api-1.7.32.jar;C:\Users\ufo\.m2\repository\org\apache\logging\log4j\log4j-to-slf4j\2.17.1\log4j-to-slf4j-2.17.1.jar;C:\Users\ufo\.m2\repository\org\apache\logging\log4j\log4j-api\2.17.1\log4j-api-2.17.1.jar;C:\Users\ufo\.m2\repository\org\slf4j\jul-to-slf4j\1.7.36\jul-to-slf4j-1.7.36.jar;C:\Users\ufo\.m2\repository\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;C:\Users\ufo\.m2\repository\org\springframework\spring-core\5.3.16\spring-core-5.3.16.jar;C:\Users\ufo\.m2\repository\org\springframework\spring-jcl\5.3.16\spring-jcl-5.3.16.jar;C:\Users\ufo\.m2\repository\org\yaml\snakeyaml\1.29\snakeyaml-1.29.jar com.hy.MyApplication . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.6.4) 2022-03-01 20:20:13.578 INFO 9952 --- [ main] com.hy.MyApplication : Starting MyApplication using Java 17.0.2 on DESKTOP-OOO5MRB with PID 9952 (C:\Users\ufo\IdeaProjects\SpringbootCli\target\classes started by ufo in C:\Users\ufo\IdeaProjects\SpringbootCli) 2022-03-01 20:20:13.582 INFO 9952 --- [ main] com.hy.MyApplication : No active profile set, falling back to 1 default profile: "default" 2022-03-01 20:20:14.362 INFO 9952 --- [ main] com.hy.MyApplication : Started MyApplication in 1.57 seconds (JVM running for 2.306) Hello cli Process finished with exit code 0
很不錯,確如預期。
5.制作執行包。
程序出來后,我們不可能讓客戶帶着Idea里運行,像這種cli程序一般是給他打個jar包,然后用java -jar的方式運行。
打包很簡單,只要把下面代碼放到pom里:
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
刷新maven后,打開maven窗口,先執行clean再執行package,在項目的target目錄里就會出現一個jar包,我的是SpringbootCli-1.0-SNAPSHOT
之后把這個jar拿出來,放到任意目錄下,打開cmd窗口,輸入java -jar SpringbootCli-1.0-SNAPSHOT.jar就執行起來了。
C:\hy>java -jar SpringbootCli-1.0-SNAPSHOT.jar . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.6.4) 2022-03-01 20:12:34.097 INFO 7628 --- [ main] com.hy.MyApplication : Starting MyApplication using Java 17.0.2 on DESKTOP-OOO5MRB with PID 7628 (C:\hy\SpringbootCli-1.0-SNAPSHOT.jar started by ufo in C:\hy) 2022-03-01 20:12:34.103 INFO 7628 --- [ main] com.hy.MyApplication : No active profile set, falling back to 1 default profile: "default" 2022-03-01 20:12:34.858 INFO 7628 --- [ main] com.hy.MyApplication : Started MyApplication in 1.294 seconds (JVM running for 1.803) Hello cli C:\hy>
【完整POM.XML】
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>SpringbootCli</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <version>2.6.4</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>
最后把完整的工程鏈接分享給大家
【完整工程鏈接】
https://files.cnblogs.com/files/heyang78/SpringbootCli220301.zip?t=1646137849
END
PS:特別提醒
如果非公網,您可能需要指定spring-boot-maven-plugin的版本,如下
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId>
<version>2.2.13.RELEASE</version>
<executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
以上藍色粗體字部分是我在單位機器上必須添加的內容,至於版本是從我的m2倉庫里找到的最高版本,而本地倉庫是連的單位maven私服。
沒有使用這句之前,打包時總是報1.5.9.RELAEASE出錯,然后執行報沒有主清單屬性。
加上這句后打包執行就都好了。
2022年3月2日10點03分