如何在 IntelliJ IDEA 中为 Spring Boot 项目构建 jar 工件

Posted

技术标签:

【中文标题】如何在 IntelliJ IDEA 中为 Spring Boot 项目构建 jar 工件【英文标题】:How to build the jar artifact for a Spring Boot project in IntelliJ IDEA 【发布时间】:2017-06-03 14:28:01 【问题描述】:

我正在使用 IntelliJ IDEA 2016.2.5,并且我已经使用 Spring Initializr 来设置 Spring Boot 项目。一切正常,我可以在 IDE 中运行和测试我的项目。

现在,当我想构建 jar 文件时,我从命令提示符运行以下命令:

$ mvn package

我的pom.xml 所在的位置以及完美创建的 jar 文件(需要注意的是,我稍后会告诉你)。问题是,我正在寻找一种在 IDE 中执行相同操作的方法。

到目前为止,我已经尝试在项目结构窗口 (Alt+Ctrl+Shift+s) 中创建一个新的 jar 工件并包含项目的输出,而对于我使用 Extract into Output Root 的 maven 依赖项。这样,可以构建和运行工件,但会发出大量错误消息,并且某些功能无法正常工作。

有人知道如何在 IntelliJ IDEA 中为 Spring Boot 项目构建 jar 文件吗?

我需要在 IDE 中构建我的 jar 文件的原因是我的项目是由几个 maven 项目组成的,并且我已经将它们全部作为模块导入到一个项目中。当我在 IDE 中运行主模块时,IntelliJ IDEA 足够聪明,可以将模块视为主模块的依赖项。但是当我使用命令提示符mvn 时,这并没有发生(这是完全可以理解的,因为 maven 只知道主项目而不知道其余项目)。要是我能在 IDE 中构建就好了..

为了更好地说明我的情况,我有一个“主”项目和一个“库”,当然库是 Main 的依赖项。由于我没有 maven 存储库(此时,我不是在寻找一个),我知道使 maven 编译我的代码成为可能的唯一方法是在 Main 的 pom.xml 中命名 Library 像这个:

<dependency>
    <groupId>org.example</groupId>
    <artifactId>library</artifactId>
    <version>1.0-SNAPSHOT</version>
    <scope>system</scope>
    <systemPath>$basedir/lib/library-1.0-SNAPSHOT.jar</systemPath>
</dependency>

据我所知,这是非常不鼓励的。在这种情况下,如果我将库命名为普通依赖项:

<dependency>
    <groupId>org.example</groupId>
    <artifactId>library</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

由于相邻模块(库)输出完全相同的工件,IntelliJ IDEA 能够将依赖项与该模块匹配并编译代码。但是在mvn的情况下,由于没有涉及到模块,所以不能这样做并且不满足依赖关系。换句话说,我只能将我的环境配置为使用 mvn 或 IntelliJ IDEA,但不能同时使用两者!

【问题讨论】:

为什么不在你的 maven 配置中建立其他模块的依赖关系? 我会在问题中解释 【参考方案1】:

进入项目根目录如springbootdemo,运行如下命令:

    mvnw clean package(这将创建目标文件夹并在其中生成 jar) mvnw spring-boot:run(这将运行 Spring Boot 应用程序)。 在我的例子中,应用程序名称是springbootdemo,它的位置是C:\Users\springbootdemo,我在这个位置运行了两个命令。

【讨论】:

运行 ./mvnw clean package 解决了这个问题【参考方案2】:

在IDEA中,你可以进入工具窗口“Maven Project”,在这里双击Package。

【讨论】:

如果找不到Maven Project,请使用Ctrl + E搜索。

以上是关于如何在 IntelliJ IDEA 中为 Spring Boot 项目构建 jar 工件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 IntelliJ IDEA 14 中为当前项目工作配置注释处理?

如何在 IntelliJ IDEA Grails 项目中为 groovy 方法获取 javadocs / groovydocs?

在intellij IDEA中为web应用创建图片虚拟目录(详细截图)

如何在intelliJ IDEA中为我现有的Kotlin项目生成build.gradle文件

在 IntelliJ IDEA 中为现有项目添加 GIT 支持

在 IntelliJ IDEA 中为 scala 项目附加源