构建 jar 并从 cmd 运行 spring boot

Sen*_*tar 10 java pom.xml spring-boot spring-websocket spring-boot-maven-plugin

我是 springboot 的新手,使用的是 springboot 2 版本。

我想在命令提示符下使用java -jar my-app-0.0.1-SNAPSHOT.jar运行我的 spring boot 应用程序。

但是,当我使用 eclipse 构建应用程序时,它直接调用 myService.getMyMethod() 并且不构建 jar。

我想先构建 jar 文件,然后从命令提示符运行java -jar my-app-0.0.1-SNAPSHOT.jar ,这将调用 myService.getMyMethod()

我已经在 pom.xml 中有 spring-boot-maven-plugin,运行mvn package / mvn install启动应用程序,但不会在目标文件夹中生成 jar 文件。mvn clean package 也不起作用,MyApplication 正在使用实现 CommandLineRunner 并开始调用构建方法,因此不生成构建 jar 文件

我的主要课程:

@SpringBootApplication
public class MyApplication implements CommandLineRunner {

private static String URL = "ws://localhost:8080/spring-mvc-java/chat";

   @Autowired
   private MyService myService;

   public static void main(String[] args) {
       SpringApplication.run(MyApplication.class, args);
   }
   @Override
   public void run(String... args) throws Exception {
       myService.getMyMethod(URL);
   }
}

Run Code Online (Sandbox Code Playgroud)

我的服务等级:

@Service
public class MyServiceImpl implements MyService {

     public void getMyMethod(String URL){
           WebSocketClient client = new StandardWebSocketClient();
           WebSocketStompClient stompClient = new WebSocketStompClient(client);
           stompClient.setMessageConverter(new MappingJackson2MessageConverter());
           StompSessionHandler sessionHandler = new MyStompSessionHandler();
           stompClient.connect(URL, sessionHandler);
           new Scanner(System.in).nextLine(); // Don't close immediately.
           }
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*nik 6

为了运行 jar,java -jar你应该使用spring-boot-maven-plugin

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.3.0.RELEASE</version>
            </plugin>
        </plugins>
    </build>
Run Code Online (Sandbox Code Playgroud)

该插件会将项目的所有依赖项“烘焙”到 JAR 中,并添加一些“技术”代码,以允许运行此 JAR java -jar(确切的细节超出了这个问题的范围)

如果将其添加到构建中并运行mvn package / mvn install它将在文件夹中的原始 jar 旁边创建target一个大 JAR(将使用后缀重命名.original)。

您可以使用 WinRAR/WinZIP 打开它,并确保所有类都在那里并且所有依赖项都在BOOT-INF/lib文件夹中。

然后你可以运行该项目java -jar