【问题标题】:Spring Boot Dev Tools Turning them off for production?Spring Boot 开发工具关闭它们以进行生产?
【发布时间】:2016-10-08 15:39:51
【问题描述】:

我阅读了很多关于 spring 开发工具的信息,并且我已经尝试过它们,它们看起来很酷。但是,我不明白它们是如何启用/禁用的。例如,只需添加依赖项,一切都会神奇地工作,但是如果我想将我的代码部署到生产环境中呢?开发工具是否仍在运行,我需要使用配置文件或其他方式禁用它们?

【问题讨论】:

  • 只需添加一个依赖项,当您运行应用程序时,它们就会位于类路径中,以便 Spring Boot 找到并激活它们。对于生产,请确保您不在类路径中包含 devtools jar 文件;或者在您的构建中,使用例如 Maven 配置文件并确保 devtools 不作为生产构建的依赖项。
  • 好的,所以我应该将依赖项添加到开发人员配置文件或类似的东西中启用或禁用它。是否有使用环境变量来配置它的替代选项,还是必须是配置文件?

标签: spring spring-boot


【解决方案1】:

不,它会自动关闭。

来自Spring Boot reference documentation

开发者工具在完全运行时会被自动禁用 打包的应用程序。如果您的应用程序是使用 java -jar 启动的 或者如果它开始使用一个特殊的类加载器,那么它被认为是 “生产应用程序”。将依赖项标记为可选是 防止 devtools 被传递应用的最佳实践 到使用您的项目的其他模块。 Gradle 不支持可选 开箱即用的依赖项,因此您可能需要查看 同时使用 propdeps-plugin。

如果您想确保 devtools 永远不会包含在产品中 构建,您可以使用 excludeDevtools 构建属性来完全 删除 JAR。 Maven 和 Gradle 插件。

【讨论】:

【解决方案2】:

对于使用 JAR 打包的 Spring Boot 应用程序,它会自动排除。但是,对于 WAR 打包的 Spring Boot 项目,情况并非如此。对于 Maven Spring Boot 项目,您必须将依赖项标记为 provided 并在您的 pom.xml 中设置 excludeDevTools=true

将开发工具更改为“提供”

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <scope>provided</scope>
</dependency>

从 maven spring build 插件中排除 devtools

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <excludeDevtools>true</excludeDevtools>
    </configuration>
</plugin>

更多信息在这里:https://github.com/spring-projects/spring-boot/issues/7556

【讨论】:

【解决方案3】:

spring-boot-devtools 仅用于简化开发工作。在打包应用程序时,不包括此依赖项。不能用于创建可发货的产品。

【讨论】:

  • 有什么参考资料(官方文档链接)吗?
猜你喜欢
  • 1970-01-01
  • 2013-03-27
  • 2015-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多