Java 从cmd构建jar并运行springboot

Java 从cmd构建jar并运行springboot,java,spring-boot,pom.xml,spring-websocket,spring-boot-maven-plugin,Java,Spring Boot,Pom.xml,Spring Websocket,Spring Boot Maven Plugin,我是springboot新手,使用springboot 2版本 我想从命令提示符下使用java-jar my-app-0.0.1-SNAPSHOT.jar运行spring启动应用程序 但是,当我使用eclipse构建应用程序时,它直接调用myService.getMyMethod(),而不构建jar 我想先构建jar文件,然后从调用myService.getMyMethod()的命令提示符运行java-jar my-app-0.0.1-SNAPSHOT.jar 我已经在pom.xml中安装了sp

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

我想从命令提示符下使用java-jar my-app-0.0.1-SNAPSHOT.jar运行spring启动应用程序

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

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


我已经在pom.xml中安装了spring boot maven插件,运行mvn package/mvn install启动应用程序,但不在目标文件夹中生成jar文件。mvn clean包也不工作,MyApplication正在使用implements 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);
   }
}

我的服务级别:

@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.
           }
}

为了使用
java-jar
运行jar,您应该使用
springbootmaven插件

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.3.0.RELEASE</version>
            </plugin>
        </plugins>
    </build>

org.springframework.boot
springbootmaven插件
2.3.0.1发布
这个插件将把项目的所有依赖项“烘焙”到JAR中,并添加一些“技术”代码,允许使用
java-JAR
运行这个JAR(确切的细节有点超出了这个问题的范围)

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

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


然后您可以使用
java-jar
运行项目,为了使用
java-jar
运行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>

org.springframework.boot
springbootmaven插件
2.3.0.1发布
这个插件将把项目的所有依赖项“烘焙”到JAR中,并添加一些“技术”代码,允许使用
java-JAR
运行这个JAR(确切的细节有点超出了这个问题的范围)

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

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

然后您可以使用
java-jar

  • pom.xml
    中添加标签
    jar
  • 您可以使用命令
    mvn-package
    maven-install
    构建
    maven项目。它将在
    target
    文件夹中创建
    .jar
    文件
  • 从存在
    .jar
    的位置运行命令-
    java-jarjarname.jar
  • 现在您可以访问您的
    系统

  • pom.xml
    中添加标签
    jar
  • 您可以使用命令
    mvn-package
    maven-install
    构建
    maven项目。它将在
    target
    文件夹中创建
    .jar
    文件
  • 从存在
    .jar
    的位置运行命令-
    java-jarjarname.jar


  • 现在您可以访问您的
    系统了

    您是否将
    spring boot maven插件
    添加到
    pom.xml
    以创建正确的jar?是的。更新了postif
    mvn包
    不会生成jar,但启动应用程序时,您可能有一个测试阻止了该过程。@M.Deinum请查找更新的代码,您的服务正在阻止,因此阻止了测试的完成,因此maven无法生成jar。您是否将
    spring boot maven插件
    添加到
    pom.xml
    以创建正确的jar?是的。更新了postif
    mvn包
    不会生成jar,但启动应用程序时,您可能有一个测试阻止了该过程。@M.Deinum请查找更新的代码,您的服务正在阻止,因此阻止了测试的完成,因此maven无法生成jar。更新了my post.run
    mvn clean package
    -默认情况下,“重新打包”目标绑定到maven()中的“打包”阶段mvn clean package也不工作,我的主要类是使用implements CommandLineRunner,并开始调用buildtry上的方法,从中生成相同的项目,并查看与pom的差异……我在pom.xml中有spring boot maven插件,但没有生成jar。更新了my post.run
    mvn clean package
    -默认情况下,“重新打包”目标绑定到maven()中的“打包”阶段mvn clean package也不起作用,我的主要类正在使用implements CommandLineRunner并开始调用buildtry上的方法从中生成相同的项目,并查看与pom的差异。。。