spring boot開發熱載入問題 自動編譯不生效

kim.fu發表於2018-09-18

今天抽空寫下spring boot開發時熱載入問題。筆者本地環境如下

作業系統:Mac os;ide:idea 2017 旗艦版;spring boot 2.0.4;

首先在父pom.xml檔案中新增依賴項:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
</dependency>

然後在子某塊pom.xml檔案中配置

    <build>
        <finalName>xxxxx</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <mainClass>xxxx</mainClass>
                    <fork>true</fork><!--必須-->
                    <addResources>true</addResources>
                </configuration>
            </plugin>
        </plugins>
    </build>

接下來是idea設定

設定自動編譯

 

接下來 快捷鍵 command + option + shift + /(每個人的電腦設定可能不一樣)

選擇Registery

另外在application.properties中可以加入以下程式碼

#熱部署生效false是不用重啟的意思
spring.devtools.restart.enabled=false
#設定重新載入的目錄
spring.devtools.restart.additional-paths=src/main/java
#classpath目錄下的WEB-INF資料夾內容修改不重啟
spring.devtools.restart.exclude: WEB-INF/**

當然你也可以在啟動類中新增這麼一段程式碼:

@ImportResource({"classpath*:META-INF.spring/applicationContext.xml"})
@SpringBootApplication
@EnableApolloConfig({"dev1.redis","dev1.email_default","application"})
@EnableDiscoveryClient
public class StartServiceApplication {
    @Bean
    @LoadBalanced
    public RestTemplate createRestTemplate() {
        return new RestTemplate();
    }

    public static void main(String[] args) {
        // 新增如下程式碼,主要是修改不用重新啟動的意思
        System.setProperty("spring.devtools.restart.enabled", "false");
        SpringApplication.run(StartServiceApplication.class, args);
    }
}

 

當以上都設定好之後,你回發現其實並沒有卵用 ,網上看很多哥們按上面的步驟就說沒有問題了。但我的環境還是不生效

接下來告訴你們原因,修改java檔案之後按   command + F9或者點選

你會發現出現如下提示資訊

這樣就熱載入生效了。

筆者也想能不能我修改儲存後自動make啊,發現是不行的。然後有網友用設定巨集的辦法去解決這個問題

參考連結如下:

https://my.oschina.net/fdblog/blog/172229

好了,以上就是總結,當然網友有遇到其他疑問也可以評論文章,我會及時回覆的

相關文章