Spring Boot和Maven: 如何创建带有主类的可执行jar包?

3

最近,我写了一个Spring-Boot项目,并希望Maven能够创建一个jar文件,以便我可以通过命令“java -jar”运行。

这是我编写的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>SpringBootGame</groupId>
    <artifactId>SpringBootGame</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.0.3.RELEASE</version>
        </dependency>    
    </dependencies>

    <properties>
        <java.version>1.8</java.version>
    </properties>


    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.0.3.RELEASE</version>
                <configuration>
                    <mainClass>com.game.Main</mainClass>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

为了构建jar文件,我必须运行命令:"mvn clean package spring-boot:repackage"。
我的问题是:
1. 为什么我必须添加spring-boot-maven-plugin?我已经有spring-boot-starter-web依赖项添加了spring-boot作为依赖项和maven-compiler-plugin从代码构建jar文件?
2. 你能想到一种配置pom.xml文件的方法,使我能够使用“本地”命令“mvn clean package”获取jar文件,而不是繁琐的“mvn clean package spring-boot:repackage”吗?
谢谢

顺便提一下:您可以声明编译器版本,而无需仅为此目的声明编译器插件 - Gerold Broser
2个回答

3

为什么我还需要添加spring-boot-maven-plugin插件?我已经有spring-boot-starter-web依赖项,它将spring-boot作为依赖项,并且还有maven-compiler-plugin从代码构建jar文件?

因为该插件是为Spring Boot添加Maven支持的。

你能想一种配置pom.xml文件的方式,使我能够使用“本地”命令“mvn clean package”获取jar文件而不是笨拙的“mvn clean package spring-boot:repackage”吗?

看起来您缺少<packaging>jar</packaging>元素,在<project></project>元素之间。

您必须运行那个冗长的命令的原因是没有包含<executions></executions>元素。请参阅以下文档的第71.1节:

https://docs.spring.io/spring-boot/docs/current/reference/html/build-tool-plugins-maven-plugin.html#build-tool-plugins-include-maven-plugin

71.2详细说明了<packaging>元素。


-1
在您已经安装的Maven插件配置中,您需要添加可执行块,例如:
<configuration>
   <executable>true</executable>
</configuration>

这将在目标文件夹中创建可运行的 JAR 文件,可使用 java -jar 命令来运行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接