Bauen Sie ein Glas und lassen Sie den Frühlingsstiefel von cmd laufen - java - Program QA

Bauen Sie ein Glas und lassen Sie den Frühlingsstiefel von cmd laufen

2020-06-30 java spring-boot pom.xml spring-websocket spring-boot-maven-plugin

Ich bin neu in Springboot und benutze Springboot 2 Version.

Ich möchte meine Spring-Boot-Anwendung mit: java -jar my-app-0.0.1-SNAPSHOT.jar an der Eingabeaufforderung ausführen .

Wenn ich die Anwendung jedoch mit Eclipse erstelle, ruft sie myService.getMyMethod () direkt auf und erstellt das JAR nicht.

Ich möchte zuerst die JAR-Datei erstellen und dann java -jar my-app-0.0.1-SNAPSHOT.jar an der Eingabeaufforderung ausführen, die myService.getMyMethod () aufruft.

Ich habe bereits das Spring-Boot-Maven-Plugin in pom.xml. Wenn Sie mvn package / mvn install ausführen, wird die Anwendung gestartet, aber die JAR-Datei wird nicht im Zielordner generiert. mvn clean package funktioniert auch nicht. MyApplication verwendet die Implementierung von CommandLineRunner und ruft die Methode beim Erstellen auf, wodurch die Build-JAR-Datei nicht generiert wird

Meine Hauptklasse:

@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);
   }
}

Meine Serviceklasse:

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

Answers

Wenn es sich um ein Maven-Projekt handelt, benötigen Sie das Maven-Assembly-Plugin (um ein Fat Jar mit Abhängigkeiten zu erstellen) oder das Maven-Jar-Plugin und führen einfach "mvn clean install" aus. Das Glas wird im Zielordner erstellt. Sie müssen die Hauptklasse in der Plugin-Konfiguration definieren.

Wenn dies ein Gradle-Projekt ist, führen Sie einfach ./gradlew clean build aus, und das JAR wird im Verzeichnis build libs erstellt.


Bearbeiten:

Eine andere Möglichkeit ist die Verwendung des Spring-Boot-Maven-Plugins .

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>2.3.0.RELEASE</version>
            <configuration>
                <mainClass>${start.class}</mainClass>
                <layout>JAR</layout>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

und mvn spring-boot: neu verpacken

Um das JAR mit java -jar Jar java -jar , sollten Sie das 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>

Dieses Plugin "backt" alle Abhängigkeiten des Projekts in die JAR und fügt "technischen" Code hinzu, mit dem diese JAR mit java -jar (die genauen Details sind für diese Frage nicht möglich).

Wenn Sie es in die Build hinzufügen, und führen Sie mvn package / mvn install es im schaffen target ein großen JAR neben das Originalglas (das wird umbenannten mit Suffix .original ).

Sie können es mit WinRAR / WinZIP öffnen und sicherstellen, dass alle Ihre Klassen vorhanden sind und sich alle Abhängigkeiten im Ordner BOOT-INF/lib .

Dann können Sie das Projekt mit java -jar

Related