Spring Boot Dev Tools将它们关闭以进行生产?

时间:2016-06-08 11:32:52

标签: spring spring-boot

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

3 个答案:

答案 0 :(得分:17)

不,它已自动关闭。

来自Spring Boot reference documentation

  

完全运行时会自动禁用开发人员工具   打包应用程序如果您的应用程序是使用java -jar启动的   或者,如果它开始使用特殊的类加载器,那么它被考虑   一个“生产应用程序”。将依赖项标记为可选是a   阻止devtools传递的最佳实践   使用您的项目的其他模块。 Gradle不支持可选   开箱即用的依赖项,所以你可能想看看   同时支持插件。

  

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

答案 1 :(得分:2)

使用JAR打包的Spring Boot应用程序会自动排除它。但是,对于WAR打包的Spring Boot项目,事实并非如此。对于Maven Spring Boot项目,您必须将依赖项标记为“已提供”,并在pom.xml

中设置excludeDevTools = true。

将devtools更改为“提供”

final BottomSheetDialog dialog = new BottomSheetDialog(YourActivity.this);
            dialog.setContentView(R.layout.your_bottomsheet_layout);
            dialog.setCanceledOnTouchOutside(false);

            ImageButton btnClose = (ImageButton) dialog.findViewById(R.id.button_close);
            btnClose.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    dialog.dismiss();
                }
            });
            dialog.show();

从Maven Spring构建插件中排除devtools

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

此处有更多信息:https://github.com/spring-projects/spring-boot/issues/7556

答案 2 :(得分:0)

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