2017-12-14 6 views
1

Java에서 Intellij로 작업하고 있습니다. 이제 jar lib에 소스를 연결하여 외부 lib 코드로 디버깅 할 수 있습니다. 하지만 이제는 lib의 소스 코드를 변경하고 jar에 다시 패키지하지 않고 즉시 다시 적용하여 기본 프로젝트에 다시 포함하려고합니다. 내가 할 수 있을까?Java Intellij : 외부 lib 코드를 변경하고 즉시 적용하십시오.

+1

나는 그것이 불가능하다고 생각한다. 변경 사항을 jar 파일로 다시 컴파일해야 할 것이다. Btw는 외부 Java 라이브러리를 편집하는 것은 좋지 않습니다. 그것을 재정의 한 다음 자신의 코드를 수정해야합니다. – nhoxbypass

+0

jrebel (상업용 제품)이 확실히 허용한다고 생각합니다. 확실하지는 않지만 IntelliJ [원격 디버그] (https://www.jetbrains.com/help/idea/run-debug-configuration-remote-debug.html)도 잘 동작 할 것입니다. –

+0

빠른 복귀를 고맙게 생각합니다 ;-) – GhostCat

답변

1

개념적으로는 좋지 않습니다.

어느 것이 든 외부 라이브러리입니다. 그런 다음 배포 아티팩트는 JAR입니다. 아니면 "소스 프로젝트"입니다.

다른 말로하면 : 케이크를 먹고 동시에 먹으려 고합니다. 기술적 인 방법으로 해킹 할 수 있다면 거기에 가지 않아야합니다. 개념 상 잘못 되었기 때문입니다.

질문이 주로 인 경우 동적 인은 실행중인 JVM을 업데이트합니다.이를 위해서는 JRebel과 같은 도구를 사용할 수 있습니다. 하지만 JVM이 JRebel 에이전트 (테스트/dev 시스템에서는 괜찮지 만 프로덕션 환경에서는 사용할 수 없음)로 실행해야합니다.

+0

JRebel과 같은 도구가 있지만 무료입니까? –

+0

@ThachHuynh Google에 대한 용어는 "java code hotswap"입니다. 예를 들어 https://sites.google.com/a/athaydes.com/renato-athaydes/posts/4freewaysthot-swapcodeonthejvm을 참조하십시오. 기록을 위해 : 우리는 JRebel을 사용하고 있습니다. 예, 비용이 들었습니다. 하지만 각 센트의 가치가 있습니다 (환경을 자주 테스트/dev 시스템으로 교체해야하는 경우). – GhostCat

1

라이브러리의 소스 코드가있는 경우이 소스 코드와 함께 별도의 모듈을 만들고 라이브러리 항아리 대신 해당 모듈에 add a dependency을 만듭니다.

그리고 jar 라이브러리가 소스 코드와 동기화되도록하려면 프로젝트 빌드와 함께이 라이브러리 모듈에서 jar artifact을 빌드하도록 구성 할 수 있습니다.