Spring Boot Maven插件未创建可执行jar

Spring Boot Maven插件未创建可执行jar,spring,maven-3,spring-boot,Spring,Maven 3,Spring Boot,我的POM如下。但是当我运行“mvn clean package”时,并没有创建可执行JAR。然而,当我删除dependencyManagement元素并添加springboot作为父POM时,一切都正常 我错过了什么 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSche

我的POM如下。但是当我运行“mvn clean package”时,并没有创建可执行JAR。然而,当我删除dependencyManagement元素并添加springboot作为父POM时,一切都正常

我错过了什么

<?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>com.example</groupId>
    <artifactId>sample-boot</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <!-- Import dependency management from Spring Boot -->
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>1.2.0.M2</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

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

    <repositories>
        <repository>
            <id>spring-snapshots</id>
            <url>http://repo.spring.io/snapshot</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>spring-milestones</id>
            <url>http://repo.spring.io/milestone</url>
        </repository>
    </repositories>

    <pluginRepositories>
        <pluginRepository>
            <id>spring-snapshots</id>
            <url>http://repo.spring.io/snapshot</url>
        </pluginRepository>
        <pluginRepository>
            <id>spring-milestones</id>
            <url>http://repo.spring.io/milestone</url>
        </pluginRepository>
    </pluginRepositories>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

4.0.0
com.example
示例引导
0.0.1-快照
org.springframework.boot
spring启动依赖项
1.2.0.2平方米
聚甲醛
进口
org.springframework.boot
SpringBootStarterWeb
春季快照
http://repo.spring.io/snapshot
真的
春季里程碑
http://repo.spring.io/milestone
春季快照
http://repo.spring.io/snapshot
春季里程碑
http://repo.spring.io/milestone
org.springframework.boot
springbootmaven插件

这是因为在第二种情况下,插件是在父级中配置的。如果您想管理自己的插件(即不使用父插件),则必须显式配置spring boot插件(以及其他插件)。

您需要自己配置spring boot maven插件:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>1.1.8.RELEASE</version>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

org.springframework.boot
springbootmaven插件
1.1.8.发布
重新包装

显然,设置自己的插件版本。现在,如果您运行mvn安装或mvn包,您将生成可执行JAR。

当您使用Spring boot依赖项管理(没有Spring boot starter父项)时,您仍然可以保留依赖项管理的好处,但不能保留插件管理的好处

这意味着您需要提供完整的插件(包括版本和其他内容)

给定的是创建可执行jar文件的pom.xml

观看视频:


根据SpringBoot文档。 该插件重写您的清单,特别是它管理主类和开始类条目,因此如果默认值不起作用,您必须在那里配置它们(而不是在jar插件中)。清单中的主类实际上由引导插件的布局属性控制

根据SpringBoot文档,以下更改对我有效

    <build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <mainClass>YourSpringBootJavaClass</mainClass>
                <layout>WAR</layout>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
    <finalName>yourwarfileName</finalName>
</build>

org.springframework.boot
springbootmaven插件
你的SpringBootJavaClass
战争
重新包装
yourwarfileName

一年多以来,我一直在为一个项目构建一个可运行的JAR(Maven POM),最近发生了一些变化,JAR不再包含任何依赖JAR。最终,更新到最新的Spring启动版本(在撰写本文时为我提供了1.5.2.release)解决了这个问题

Spring Boot将确保您的应用程序在运行
mvn包时作为测试启动。确保在此过程中没有出现故障。

您是否有文档链接来确认这一点?这解决了我的错误。我在
中有
spring boot maven插件
,同时在
中也有一些依赖项。即使在插件上指定了
repackage
,我仍然没有得到一个可执行的jar。将
springbootmaven插件
移回
允许我再次获得一个可执行jar
$ mvn clean
$ mvn install
    <build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <mainClass>YourSpringBootJavaClass</mainClass>
                <layout>WAR</layout>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
    <finalName>yourwarfileName</finalName>
</build>