복붙노트

[SPRING] IntelliJ + Tomcat + Spring-Loaded

SPRING

IntelliJ + Tomcat + Spring-Loaded

IntelliJ를 통해 Tomcat을 실행하는 Spring Source의 "Spring Loaded"클래스 리로딩 에이전트를 시험해보고 싶습니다.

https://github.com/SpringSource/spring-loaded

Tomcat 실행 구성에 JVM 인수를 추가했는데 webapp가 오류없이 시작되고 정상적으로 작동하는 것 같습니다.

클래스 재로드를 트리거하는 방법을 잘 모르겠습니다. 내가 수정 한 클래스를 컴파일하기 만하면됩니까? 나는 그것을 시도하고 그것이 작동하지 않는 것 같았다. Tomcat을 업데이트하고 클래스와 리소스를 배포해야합니까? 그것도 작동하지 않는 것 같은데 ...?

모든 특정 구성 세부 정보는 크게 감사하겠습니다.

편집 : 더 많은 정보, 내 문제는 두 개의 모듈을, 하나의 핵심 코드 라이브러리 및 webapp 사용하여 할 수 있습니다 생각합니다. 저는 Maven을 둘 다 사용합니다. 하나는 jar 프로젝트로 구성되고 다른 하나는 전쟁 프로젝트로 구성됩니다. IntelliJ는 폭발 된 전쟁에 대한 Artifact를 설정하여 jar 모듈의 jar 파일을 사용합니다. jar 모듈의 컴파일 된 출력을 WEB-INF / classes에 통합하기 위해 Artifact 구성을 전환 해 보았습니다. 이제 target / webapp / WEB-INF / class / etc에 .class 파일이 보입니다. 그러나 편집 할 때 IntelliJ에서 특정 클래스 파일을 업데이트하는 방법을 모르겠습니다.

해결법

  1. ==============================

    1.바람둥이에 다음 jvm 매개 변수를 추가 한 경우 (springloaded 페이지에서 설명한대로)

    바람둥이에 다음 jvm 매개 변수를 추가 한 경우 (springloaded 페이지에서 설명한대로)

    -javaagent:<pathTo>/springloaded-{VERSION}.jar -noverify SomeJavaClass
    

    너 괜찮을거야. tomcat에서 테스트중인 webapp에 대한 자동 다시로드를 사용하지 않도록 설정할 수 있습니다. server.xml의 예제는 다음과 같습니다.

    <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
        <Context docBase="projekt" path="/projekt" reloadable="false" ...
    

    이렇게하면 스프링로드 된 클래스 로더 만 변경된 클래스를로드 할 수 있습니다.

  2. ==============================

    2.스프링로드가 항아리를 핫 스왑 할 수 없습니다.

    스프링로드가 항아리를 핫 스왑 할 수 없습니다.

    웹 조각 출력을 webapp / WEB-INF / classes에 넣습니다.

    또한 스프링 장착 지지대 만 스프링 4.1 https://github.com/spring-projects/spring-loaded/issues/139

  3. from https://stackoverflow.com/questions/15118681/intellij-tomcat-spring-loaded by cc-by-sa and MIT license