source

스프링 부츠 + 스프링 탑재 (IntelliJ, Gradle)

manycodes 2023. 2. 22. 22:48
반응형

스프링 부츠 + 스프링 탑재 (IntelliJ, Gradle)

스프링 부츠 프로젝트에 핫 스왑을 사용하고 싶습니다.이 토픽은 문서화되어 있습니다만, IDE(IntelliJ)로 실행해 버리면, 어떻게든 동작할 수 없습니다.VM 속성을 가진 기본 메서드로 클래스를 실행하면 됩니다.

-javaagent:/path/to/jar/springloaded.jar -noverify

질문입니다만, 어떻게 하면 동작할 수 있을까요? :-)

Gradle과 IntelliJ가 탑재된 스프링을 어떻게 사용할 것인가에 대한 추가 질문이 있습니다.개발자가 JAR을 수동으로 다운로드하여 어딘가에 배치하고 JVM 파라미터로 가리키도록 강요하는 것은 매우 불편합니다.더 나은 방법(작업을 수행하는 자체 작업을 구성하고 IDE에서 Gradle 태스크로 실행해야 합니까?)

설명서에 설명된 대로 프로젝트를 구성해야 합니다.

http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/ #스프링 로드 그레이들&인텔리제 아이디어

후 를 build링크에서 후 "build/classes/main"을 호출할 수 ).gradle idea할 수 있습니다).

그런 다음 디버깅 모드를 사용하여 태스크(실행/bootRun)를 시작하거나 IDE에서 기본 클래스를 실행할 경우 클래스 컴파일 시 핫 코드 새로고침이 작동합니다.

여기서 중요한 것은 이클립스와 달리 인텔리J는 저장 시 클래스를 자동으로 컴파일하지 않는다는 것입니다(컴파일러를 "Build on Save"로 설정해도 실행 중/디버깅 시 클래스가 실행되지 않습니다).이는 IntelliJ에 의해 만들어진 설계 취소로, Intellij IDEA Java 클래스는 저장 시 자동 컴파일되지 않습니다(CrazyCoder answhat as auto compiled on save (CrazyCoder answer)

Spring Boot에서 소스 코드 파일을 감시하고 변경 시 재컴파일하는 구성 옵션을 제공하는 것이 이상적입니다.이것이 Grails의 기능입니다.하지만 그런 생각은 아직 존재하지 않고, 어쩌면 그것을 클래스 패스 등의 관리를 담당하는 gradle과 조합하는 것조차 불가능하다고 생각합니다.

두 가지 옵션이 있습니다.

  • 편집한 내용을 모두 컴파일해야 합니다(이전 StackOverflow 링크에서 제시된 것처럼 컴파일하기 쉬운 단축키를 추가하면 도움이 될 수 있습니다).
  • 소스 코드 파일에서 변경이 감지되면 gradle compileJava/compileGroovy를 호출하는 파일 시스템 모니터(inotify-tools for Linux, launchd for Mac OS X)를 몇 개 배치합니다.

첫 번째는 지루하고 두 번째는 느립니다.실제로 IDE :-D(또는 EclipseMode IntelliJ 플러그인 설치)를 변경하는 방법도 있습니다.

Spring Boot의 Gradle 태스크를 전혀 사용하지 않고 IntelliJ에서만 응용 프로그램을 실행할 수 있도록 하려면 다음 절차를 수행합니다.

  1. Spring Loaded 에이전트를 사용하도록 IntelliJ에서 실행 구성을 구성합니다.이것은 간단하게 실시할 수 있습니다.다음 스크린샷에 예를 나타냅니다.

여기에 이미지 설명 입력

「 「 」가 되어 있는 해 주세요.VM Option-javaagent:/path/to/springloaded-${version}.jar -noverify(여기에서 다운로드 가능)

  1. 다음 스크린샷과 같이 오른쪽 클릭-> 디버깅을 사용하여 디버깅합니다.

여기에 이미지 설명 입력

  1. 변경할 때마다 새로고침할 때마다 프로젝트를 컴파일하기만 하면 됩니다.기본 바로 가기는 F9+이지만 메뉴에서도 액세스할 수 있습니다.Build->Make Project

메이븐 프로젝트에서 IDEA를 사용하여 이 작업을 할 수 있었습니다.그래들 버전에서도 동작할 수 있을 것 같습니다.제 절차는 다음과 같습니다.

  • 설정 -> 컴파일러 -> 자동으로 프로젝트 작성 (실행/디버깅하지 않을 때만 동작합니다!)
  • 프로젝트를 시작하려면 IDE 외부에 있는 sprint-boot-plugin(위 문장으로 인한 트릭)을 사용합니다.

Maven 플러그인 설정은 다음과 같습니다.

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <dependencies>
                <dependency>
                    <groupId>org.springframework</groupId>
                    <artifactId>springloaded</artifactId>
                    <version>1.2.0.RELEASE</version>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
</build>

이제 코드를 변경하고 페이지를 다시 로드합니다.

인텔리J 아이디어에서 Spring Boot and Gradle을 운영하고 있습니다.자동 새로고침은 100% 작동합니다.

  • 정적 콘텐츠 자동 새로고침 중(즉시)
  • Tymeleaf는 자동 새로고침 중입니다(즉시).
  • 컨트롤러/Java 파일에서는 "빌드" 버튼(몇 초 소요)을 눌러야 하지만 재시작할 필요는 없습니다.파일 컴파일만 하면 Spring Loaded가 파일을 픽업할 수 있습니다.

1단계: 스프링 로드 시작

buildscript {
    repositories {
        mavenCentral()
        jcenter()
    }

    dependencies {
        classpath "org.springframework.boot:spring-boot-gradle-plugin:1.2.1.RELEASE"
        classpath 'org.springframework:springloaded:1.2.1.RELEASE'
    }
}

apply plugin: 'java'
apply plugin: 'application'
apply plugin: 'idea'
apply plugin: 'spring-boot'

repositories {
    jcenter()
    mavenLocal()
    mavenCentral()
}

mainClassName = 'com.noxgroup.nitro.NitroApp'

idea {
    module {
        inheritOutputDirs = false
        outputDir = file("$buildDir/classes/main/")
    }
}

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web:1.2.1.RELEASE")
    compile("org.springframework.boot:spring-boot-starter-thymeleaf")
}

jar {
    baseName = 'org.noxgroup-nitro'
    version =  '0.1.0'
}

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

순서 2: Application.properties를 만듭니다.

그리고 다음 항목을 추가합니다.

spring.thymeleaf.cache=false

스텝 3: bootRun 태스크 실행

(표준 실행 태스크뿐만 아니라 Spring Loaded 기능 추가)

순서 4: Java 컴파일

"Make Project" 키를 누르거나 "Ctrl/Command + F9" 키를 눌러 Java 파일을 만듭니다.

이후 버전의 gradle에서는 명령 창을 시작하고

gradle -t classes

그러면 소스 코드에 대한 변경 내용을 검색하고 다시 컴파일하는 프로세스가 시작됩니다.

또 달리기로.

gradle bootRun

java 또는 groovy src에 대한 모든 변경은 자동으로 다시 적용됩니다.인텔리지는 아니지만 인텔리지를 사용하는 것이 좋습니다.마음에 드는 텍스트 에디터(submlime, atom 등)로 간단하게 조작할 수 있습니다.

크레딧/링크

언급URL : https://stackoverflow.com/questions/24371111/spring-boot-spring-loaded-intellij-gradle

반응형