2011-09-07 3 views
1

Eclipse가 열려있는 동안 명령 줄에서 Maven을 실행해야합니다. 이것은 Eclipse를 혼란스럽게 할 수 있으므로 두 가지를 서로 다른 출력 폴더를 사용하도록 구성했습니다 (Maven은 target에, Eclipse m2e는 target-eclipse). 이것은 아주 잘 작동합니다.JUnit 테스트에서 Eclipse 프로젝트가 열려 있는지 여부를 어떻게 알 수 있습니까?

하지만 내 단위 테스트 중 하나에서 클래스 경로가 아닌 프로젝트의 일부인 클래스를로드해야합니다. 기본적으로, 나는 내 자신의 URL 클래스 로더를 빌드한다. 자, 문제가 있습니다 : 어떤 클래스 폴더를 추가할까요?

프로젝트가 열려있는 경우 target-eclipse/classes이 올바른 선택입니다. 그렇지 않으면 target/classes을 사용해야합니다.

Eclipse 폴더와 작업 영역 폴더를 알고 있다고 가정합니다. 프로젝트가 열려 있고 어떤 프로젝트가 아닌 Eclipse (Eclipse 플러그인이 아님)의 하위 프로세스에서 실행중인 Java 코드에서 어떻게 알 수 있습니까?

프로젝트를 닫을 때 폴더가 삭제되지 않기 때문에 폴더가 존재하지 않는 것이 좋습니다.

[편집] 기본적으로 내 질문은 : 이클립스 어딘가에 $workspace/.metadata 또는 $ECLIPSE_HOME/configuration에 해당 정보를 저장해야합니다. 어떤 파일에서 볼 필요가 있습니까?

답변

1

파일 [Workspace_Home]/.metadata/.lock은 작업 영역이 열려 있다고 알려줍니다.

작업 영역의 프로젝트 목록 및 설정은 [Workspace_Home]/.metadata/.plugins/org.eclipse.core.resources/.projects입니다.

열린 Java 프로젝트에는 폴더 [Workspace_Home]/.metadata/.plugins/org.eclipse.core.resources/.projects/[Project_name]/.indexes이있는 것으로 보입니다. 폐쇄되어 있지 않습니다. - 두 번 확인했는데 내가 틀렸어.

하지만 방금 닫힌 Java 프로젝트에 [Workspace_Home]/.metadata/.plugins/org.eclipse.core.resources/.projects/[Project_name]/org.eclipse.jdt.core/state.dat 파일이 있고 열린 프로젝트에 파일이 없다고 확인했습니다.

-1

폴더의 위치를 ​​알려주는 구성 매개 변수 (예 : 시스템 속성) 만 사용합니다. Maven으로 테스트를 실행할 때 시스템 속성을 전달하는 방법은 http://maven.apache.org/plugins/maven-surefire-plugin/examples/system-properties.html을 참조하십시오. 이 페이지의 첫 번째 예에서는 빌드 디렉토리를 시스템 등록 정보로 전달하는 방법을 보여줍니다.

+0

내가 말한 것처럼 : 나는 그 폴더를 안다. 프로젝트가 열려 있는지 여부를 어떻게 확인할 수 있습니까? –

+2

확인. 나는 그 질문을 오해 한 것 같다. 어떤 프로젝트가 이클립스에서 열려 있으면 어떤 단위 테스트를하는 것이 완전히 어리석은 것처럼 보일 수도 있습니다. 왜 이것을 필요로하는지 자세히 설명해 주시겠습니까? 폴더는 폴더이며 프로젝트가 Eclipse에서 열려 있는지 여부는 완전히 무관합니다. –

+0

My JUnit 테스트가 Jetty 서버를 시작하고 다른 프로젝트의 리소스가 변경된 경우 인스턴스를 다시 시작해야합니다. 이클립스는 클래스 구조의 변경으로 인해 배포가 방해 받는다는 불평을 항상하기 때문에 프로젝트를 추가 할 수 없습니다. JRebel을 사용할 수는 있지만 솔루션은 거의 작동합니다. –

관련 문제