Child pages
  • 개인별 이클립스 workspace 설정 공유하기
Skip to end of metadata
Go to start of metadata

프로젝트를 진행하다보면 부득이하게 여러 개의 workspace를 설정해야 하는 경우가 있다. workspace를 매번 설정할 때마다 똑같은 작업을 하는 것은 여간 짜증나는 작업이 아니다. 물론 오랜만에 OS를 새로 설치하고 한 곳의 workspace를 설정한다면 참을 만 하다. 그런데 한 번에 여러 개의 설정을 바꾸려면 짜증이 폭발한다. 귀찮은 나머지 어느 workspace에는 설정을 하고 어느 곳에서는 설정을 하지 않는 상황이 발생한다. 여기까지 인내심을 가지고 참으면서 한다고 치자. 그런데 프로젝트를 진행하면서 새로운 플러그인을 설치하고 설정을 변경하거나, 기존 설정이 마음에 들지 않아 설정을 변경할 경우 다른 workspace에도 모두 반영해 주어야 한다는 것이다.

여유가 있는 상황에서야 하나씩 바꾸겠지만 그렇지 않은 경우가 대부분이기 때문에 귀찮아서 새로운 시도를 하거나 설정을 바꾸지 않고 지나가는 경우가 대부분이다. 이 같은 문제점 때문에 몇 년 전에도 이와 관련한 글을 Eclipse Workspace 설정 공유 - 개인과 팀에 공유한 적이 있다. 항상 workspace 의 .metadata 디렉토리를 복사하는 방식으로 진행했는데 workspace가 여러 개로 나뉘어 지니까 매번 복사하는 것도 귀찮아서 이 부분을 모두 자동화해 버렸다.

먼저 개인 workspace 공간의 설정을 공유하는 방법부터 살펴보면 다음과 같다.

  • 먼저 업무용으로 사용하지 않고 기본 설정을 관리할 Base workspace를 생성한다.
  • 이 Base workspace에 workspace를 처음 생성할 때 기본적으로 설정하는 작업들을 진행한다.
  • Eclipse를 종료한 다음 Workspace 디렉토리 하위의 .metadata를 새롭게 생성할 Workspace에 복사한다.
  • 설정을 변경해야 하는 경우 먼저 Base workspace 설정을 변경한 후 .metadata 디렉토리를 다시 복사한다.

위 과정을 통해 여러 개의 workspace에 공통된 설정을 반영할 수 있다. 그런데 복사해야 하는 workspace가 많아질 경우 이 또한 귀찮은 작업이다. 현재 내가   사용하고 있는 workspace는 3개다. 설정이 바뀔 때마다 3개의 workspace에 복사하는 것이 귀찮아 윈도우즈 OS의 xcopy를 활용해 복사를 하도록 배치파일을 만들어 해결했다. 역시 자동화해 놓으니 좋다라고 느끼면서 열심히 설정을 하고 복사를 했는데 이런 각 workspace별로 프로젝트를 import했는데 복사를 했더니 import 한 프로젝트 설정이 모두 날라가 버렸다. 원인을 찾아보니 .metadata/.plugins/org.eclipse.core.resources 디렉토리의 설정이 초기화되면서 기존에 import 했던 프로젝트 정보가 덮어 씌어지기 때문이었다. 이를 해결하기 위해 복사할 때 .metadata/.plugins/org.eclipse.core.resources 디렉토리는 복사하지 않도록 exclude 설정을 주고 싶은데 xcopy를 통해서 해결하기 넘 힘들었다. 그래서 옆에 있는 개발자와 이야기하다 찾은 것이 groovy에서 ant 기능을 활용한 방법이다.

먼저 Groovy를 설치한 다음 이전에 ant를 사용할 때의 추억을 떠올리면 다음과 같이 간단하게 구현했더니 해결 완료...

def ant = new AntBuilder()
ant.echo("Start Copy Eclipse Workspace")
def workspacesDir = ["F:/archeage-cbt-workspace/workspace", 	 
	 "F:/archeage-obt-workspace/workspace",
	 "F:/my-workspace/workspace"]
def MY_BASE_WORKSPACE_DIR = "F:/Devs/base-workspace/workspace"
for ( workspace in workspacesDir) {
	ant.copy(todir:workspace, overwrite:"true", force:"true") {
		fileset(dir:MY_BASE_WORKSPACE_DIR) {
			exclude(name:".metadata/.plugins/org.eclipse.core.resources/**")
			include(name:".metadata/**")
		}
	}	
}

Groovy에 익숙하지는 않지만 Groovy에서 제공하는 예제를 보면서 위와 같이 쉽게 해결했다. xcopy를 통해 문제를 해결한 후, 문제점을 인지하고 다시 새로운 해결책을 찾기까지 모두 걸린 시간은 2시간 정도 소요된 듯 하다. 하지만 이후에 몇 번의 설정이 바뀌었으면 지금도 가끔씩 설정이 변경되는 경우가 있다. 하지만 지금은 Base workspace 설정한 후에 위 스크립트는 한 번 실행해 주면 모든 workspace에 공통된 설정을 사용할 수 있다. 이 작업을 한 이후에는 설정을 변경하는데 큰 부담이 없다. 약간 귀찮을 때도 있지만 이전보다는 훨씬 수월하게 접근할 수 있을 듯하다.

개인 workspace 관리는 이 같은 방법으로 진행하면 쉽게 해결할 수 있을 듯 하고, 개발 팀 내의 workspace 관리는 생각보다는 쉽지 않을 듯하다. 이 부분은 개발팀 내에 좋은 해결 방법을 찾거나 개인별로 알아서 맞추도로 강제할 수 밖에 없을 듯하다. 팀의 문화에 따라 달라지는 작업이기 때문에 일단은 개인적으로라도 workspace 설정 변경을 자동화해 놓으면 편할 듯하다.