2015-11-23 11 views
18

स्प्रिंग बूट devtools 1.3 के साथ नई LiveReload सुविधा के साथ मुद्दों के साथ। यह वर्ग परिवर्तनों पर पुनः लोड नहीं होता है। मैंने इसे IntelliJ @ Devoxx 2015 के साथ demo'd देखा है। क्या कुछ आईडीई सेटिंग सक्षम करने की आवश्यकता है? मैं आईडीई के माध्यम से चल रहा हूं और ग्रैडल के माध्यम से नहीं। मैंने "प्रोजेक्ट स्वचालित रूप से बनाएं" को सक्षम करने का प्रयास किया जो मदद नहीं करता है।IntelliJ 15, स्प्रिंगबूट devtools livereload काम नहीं कर रहा

यह सही ढंग से लोड करने लगता है और सही पथ में लग रही है

2015-11-23 05:55:30.592 DEBUG 4700 --- [ restartedMain] o.s.boot.devtools.restart.Restarter  : Starting application com.myapp.Application with URLs [file:/E:/Projects/myapp/build/classes/main/, file:/E:/Projects/myapp/build/resources/main/] 

मेरे फ़ाइलों

build.gradle

buildscript { 
    ext { 
     springBootVersion = '1.3.0.RELEASE' 
    } 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") 
    } 
} 

apply plugin: 'java' 
apply plugin: 'eclipse-wtp' 
apply plugin: 'idea' 
apply plugin: 'spring-boot' 
apply plugin: 'war' 


war { 
    baseName = 'myapp' 
    version = '0.0.1-SNAPSHOT' 
} 
sourceCompatibility = 1.8 
targetCompatibility = 1.8 

repositories { 
    mavenCentral() 
    maven { url "https://repo.spring.io/snapshot" } 
    maven { url "https://repo.spring.io/milestone" } 
} 

configurations { 
    providedRuntime 
} 

dependencies { 
    compile('org.springframework.boot:spring-boot-starter-actuator') 
    compile('org.springframework.boot:spring-boot-devtools') 
    compile('org.springframework.boot:spring-boot-starter-jdbc') 
    compile('org.projectlombok:lombok') 
    compile('org.springframework.boot:spring-boot-starter-web') 
    compile('net.sourceforge.jtds:jtds:1.3.1'); 
    testCompile('org.springframework.boot:spring-boot-starter-test') 
} 

dependencyManagement { 
    imports { 
     mavenBom "org.springframework.cloud:spring-cloud-starter-parent:Brixton.M3" 
    } 
} 


eclipse { 
    classpath { 
     containers.remove('org.eclipse.jdt.launching.JRE_CONTAINER') 
     containers 'org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8' 
    } 
} 

task wrapper(type: Wrapper) { 
    gradleVersion = '2.7' 
} 

HelloWorldController

@Controller 
public class HelloWorldController { 

    @RequestMapping("/") 
    @ResponseBody 
    String home(){ 

     return "Hello World test"; 
    } 
} 

उत्तर

22

मैं एक मैं अनुमान लगा रहा हूं कि आप कोडिंग कर रहे हैं और उम्मीद करते हैं कि देवतुल्स को ऑटो-जादुई रूप से पता चल जाएगा कि आपने अपनी परियोजना में कुछ बदल दिया है? Devtools अपने क्लासपाथ फ़ोल्डर देखकर करता है। जब .class फ़ाइल (या एक संसाधन) बदल गया है, तो devtools अप्रिय कार्रवाई लेते हैं।

यदि आपको कुछ भी दिखाई नहीं देता है, तो संभवतः क्योंकि आप केवल कोडिंग कर रहे हैं और क्लासपाथ को अपडेट नहीं कर रहे हैं। क्लासपाथ को अपडेट करने के लिए आपको प्रोजेक्ट बनाना होगा। the documentation

+0

निम्नलिखित "Intellij उपयोगकर्ताओं समझने की कोशिश कर बिल्ड उपयोग करने के लिए → परियोजना कार्रवाई सुनिश्चित प्राप्त करने के लिए पदच्युत करने की आवश्यकता होगी एक ही परिणाम। " हो सकता है कि यह "रीमूवर" की बजाय "याद रखें" कहने के लिए है? क्या आपने लोग अपनी परियोजना को स्वचालित रूप से बनाने के लिए मैक्रो या कुछ सेट अप किया था? IntelliJ केवल तभी समर्थन करता है जब ऐप नहीं चल रहा है ... मैंने दूसरों को मैक्रो बनाने और इसे "CTRL + S" क्रियाओं से जोड़ने की आवश्यकता है। –

+0

यह लिखने में कोई त्रुटि है कि [मास्टर पर पहले से ही तय कर ली] था (http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#using-boot-devtools-restart)। परियोजना बनाएं सिर्फ एक शॉर्टकट है। अगर आपको लगता है कि "CTRL-S" आपके लिए बेहतर है, तो ऐसा करें। लेकिन यह अनिवार्य रूप से वही बात है। मैं वास्तव में "स्वचालित रूप से" दृष्टिकोण नहीं खरीदता लेकिन यह सिर्फ मुझे हो सकता है। –

+6

ठीक है लेकिन स्थैतिक संपत्तियों के बारे में क्या है। मुझे उनके लिए एक बिल्ड क्यों शुरू करने की आवश्यकता होगी? – Kaspar

7

लाइव रीलोड और पुनरारंभ करें विभिन्न सुविधाएं हैं। लाइवरेलोड आपको resources/static फ़ोल्डर में परिवर्तनों का पता लगाने और ब्राउज़र को सूचित करने की अनुमति देता है कि फ़ाइलों को बदल दिया गया है और पृष्ठ को पुनः लोड किया जाना चाहिए।

आपका प्रश्न पुनरारंभ परिदृश्य का वर्णन करता है।

build\classes\main 

Intellij में परियोजना संरचना (Ctrl + Alt + Shift + S) और यहां जाएं: आप अपने आवेदन पर स्वचालित रूप से फिर से लोड करना चाहते हैं * .class-फ़ाइलों में परिवर्तन, सुनिश्चित करें कि आपके आईडीई outoputs को संकलित कक्षाएं बनाने सेटअप परियोजना संकलक आउटपुट डीआईआर। इसके बाद आप अपनी कक्षाओं में बदलाव कर सकते हैं और वर्तमान कक्षा को पुन: संकलित करने के लिए Ctrl + Shift + F9 दबा सकते हैं या पूरे प्रोजेक्ट को पुन: संकलित करने के लिए Ctrl + F9 दबा सकते हैं। स्प्रिंग बूट डेवटोल्स build\classes\main में परिवर्तनों का पता लगाएंगे और स्वचालित रूप से आपके एप्लिकेशन को पुनरारंभ करेंगे।

आप अपने स्थिर संपत्ति के लिए LiveReload सक्षम करने के लिए जोड़ निम्नलिखित (अन्यथा आप नहीं स्थैतिक सामग्री की cahnges देखेंगे जबकि bootRun लक्ष्य को क्रियान्वित करने) चाहते हैं:

bootRun { 
    addResources = true 
} 
5

प्रलेखन से here

जैसा कि DevTools क्लासपाथ संसाधनों पर नज़र रखता है, पुनरारंभ करने का एकमात्र तरीका क्लासपाथ को अद्यतन करना है। जिस तरह से आप क्लासपाथ को अपडेट करने का कारण बनाते हैं उस आईडीई पर निर्भर करता है जिसका आप उपयोग कर रहे हैं। ग्रहण में, एक संशोधित फ़ाइल को सहेजने से क्लासपाथ को अपडेट किया जा सकता है और फिर से शुरू किया जा सकता है। IntelliJ IDEA में, प्रोजेक्ट का निर्माण (बिल्ड → मेक प्रोजेक्ट) का एक ही प्रभाव होगा।

+0

कोई भी इस लिंक का अनुसरण कर सकता है: https://www.youtube.com/watch?v=VWF7vCJSqrA –

4

इसे हल करने के लिए आप ऐसा कर सकते हैं: 1- अपने ब्राउज़र में लाइवरलोड एक्सटेंशन जोड़ें। 2- अपने pom.xml में devtools निर्भरता जोड़ें (यदि यह maven (spring-boot-devtools) है)। 3- आपके इंटेलिज आईडीईए में: फ़ाइल-> सेटिंग्स-> बिल्ड, निष्पादन, तैनाती पर जाएं। -> कंपाइलर-> स्वचालित रूप से प्रोजेक्ट बनाएं पर जाएं। 4-अपने IntelliJ विचार: SHIFT + Ctrl + A -> registry-> compiler.automake.allow.when.app.running

0
Edit - Macros - Start Macro Recording 
File - Save All 
Build - Build Project 
Edit - Macros - Stop Macro Recording - You can save the macro name as “Save & Make Project” 
Preferences - Keymap - Macros 

मैक्रो निर्देशिका का विस्तार करने के नीचे जाएं खोजने के लिए अपने नए मैक्रो (यानी "& परियोजना बनाएं")। कीबोर्ड शॉर्टकट जोड़ने के लिए डबल क्लिक करें और यदि आप विंडोज का उपयोग करते हैं तो मैक और Ctrl + S का उपयोग करते हुए सीएमडी + एस दबाएं।

Intellij कह रही है कि Ctrl + S पहले से ही सिर्फ 'बदलें' क्लिक मौजूद संकेत देगा।

अब पूरी तरह से तैयार है और Ctrl + S वसंत-बूट DevTools उत्प्रेरित करने चाहिए

संदर्भ: https://tomyjaya.github.io/2016/10/08/spring-boot-dev-tools-in-intellij/

संबंधित मुद्दे