Language/Java

[Java] Eclipse Workspace 프로젝트 생성 시 .metadata의 정체

삼군개발자 2020. 8. 28. 01:16

Workspace 디렉토리를 지정, 실행했을때 만들어지는 .metadata 디렉토리는 도대체 무슨 역할을 할까?

 

.metadata in workspace

대다수의 이클립스 기반 개발자들은 '작업 환경이구나, 그냥 실행하니까 만들어 지는구나' 하고 넘어가지만 나는 이것의 정체에 대해 궁금해서 한번 알아보기로 했다.

 

이 내용은 몰라도 아키텍처급 개발자가 아니라면 개발하는데에 큰 지장이 없으므로 관심이 없다면 뒤로가기 버튼을 눌러도 무관하다. (그래도 봐줬으면..★)

 


▶개요

Eclipse에서는 프로젝트를 관리하는 workspace라는 디렉토리가 존재한다. 이 디렉토리에는 여러가지 프로젝트가 존재할 수 있고 그 안에는 서로다른 패키지가 존재할 수 있다.

 

하지만 이 많은 프로젝트와 패키지들이 workspace라는 공간에서 어떻게 동작할까? 그것을 한번 알아보자

 

▶의미

출처: https://ko.wikipedia.org/wiki/%EB%A9%94%ED%83%80%EB%8D%B0%EC%9D%B4%ED%84%B0

 

메타데이터 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 2010년대에 메타데이터는 일반적으로 디지털 형태를 가리킨다. 그러나 1960~1970년대의 전통적인 카드 카탈로그들 또한 메타데이터의 한 예로 들 수 있으며, 이 카

ko.wikipedia.org

메타데이터(metadata)는 데이터(data)에 대한 데이터이다. 이렇게 흔히들 간단히 정의하지만 엄격하게는, Karen Coyle에 의하면 "어떤 목적을 가지고 만들어진 데이터 (Constructed data with a purpose)"라고도 정의한다. 가령 도서관에서 사용하는 서지기술용으로 만든 것이 그 대표적인 예이다. 지금은 온톨로지의 등장과 함께 기계가 읽고 이해할 수 있는 (Machine Actionable)한 형태의 메타데이터가 많이 사용되고 있다.  

사전적 의미로는 메타데이터는 데이터에 의한 데이터라고 한다. 

 

백과사전을 예로들어보자

백과사전이라는것을 만든 사람은 아마도 단어(클래스, 메서드, 라이브러리 등)의 정의를 명확하게 기록하기 위해 만들었을것이다.

하지만 내용이(data) 점점 많아질수록 글쓴이는 이것들을 알아보기 쉽게 정리해야 할 필요를 느꼈을거다.

가나다순, 발음순, 내용순 등의 메타데이터가 등장하게 된 것이다.

 

즉 metadata란, 데이터에 관한 구조화된 데이터로, 다른 데이터를 설명해 주는 데이터이다. 

 

▶구조

.기본 .metadata 구조

.metadata 디렉토리를 살펴보면 사진과같은 폴더와 파일이 존재한다.

 

모두 이클립스를 구성하고 정의하는 환경요소이며 그것을 파헤쳐보도록 하자

 

 

.mylyn 

mylyn은 task 관리를 위한 Eclipse plugin 형태의 프로젝트로서 Jira, Bugzilla같은 이슈트래커와 호환되어 강력한 기능을 발휘하게 된다고 한다.

 

음.. 말이 어렵다.. 조금 더 알아보자

 

mylyn의 대표적 기능 두가지는

'task 관리' 와 'context 관리'가 있다고 한다.

 

task: OS가 자원을 할당하여 프로세스를 처리 할 경우 일의 단위(일, 직무, 과업 등)

context: 어떤 영역, 경계를 구분하는 데이터의 모음(리소스, 경로, 계정 등)

task 관리 context 관리
task 는 개인의 task와 공용 task 로 나뉘어진다.

개인 task는 local에 저장하여 스케줄링 등의 기본적인 태스크 관리 기능을 제공하고

공용 task는 bugzilla, jira 등의 공용 repository를 사용하여 관리하며 코멘트 쓰레드와 파일 첨부 같은
협업 기능을 제공한다.

일단 Mylyn이 구동되려면... Eclipse가 Java 1.5이상에서 구동중이어야 한다.

출처: https://babtingdev.tistory.com/155
정보통신 용어로서의 컨텍스트는 호출, 응답 간의 환경 정보라고 정의할 수 있을 것 같다. 즉, 누가 무엇을 어떤 의도를 가지고 언제 행위를 하였는지에 대한 정보를 통칭하여 컨텍스트라고 하는 듯 하다.

이 컨텍스트 정보가 그냥 일반적인 환경설정 정보와 어떤 차이를 지니냐면 컨텍스트 정보는 일반적인 환경설정 정보와 다르게 런타임시에 생성되는 정보라고 할 수 있다.

웹서비스에서 컨텍스트 기반 관리라고 한다면 웹서비스들간의 협업시에 발생할 수 있는 여러 비즈니스적인 로직을 제어, 관리하는 기능이라 할 수 있다. 즉 BPEL이나 웹서비스 Security등의 개별 기술을 통합하여 조율하여 전체적인 Orchestration을 담당하는 것이 웹서비스 컨텍스트 기반 관리이다.

출처: https://m.blog.naver.com/ljhsecret/60155604088
Task List ui 조회방법은 추후 포스팅 해야겠다.
내용이 너무 많다
ui 없음

 

위의 내용을 요약해봤을때

mylyn 디렉토리의 역할은 Eclipse 내 issue/task 관리 UI/기능을 제공하여 task 중심 개발이 가능하도록 해준다.

라고 할수있겠다.

 

최대한 쉽게 요약해도 이정도다. 알아서 공부하자.

 

.plugins

metadata의 핵심기능인 플러그인 납셨다.

 

하위 디렉토리구조를 살펴보면 다음과 같다.

.plugins 디렉토리 내부

무언가 굉장히 많다.

 

이 많은 폴더들은 eclipse가 존재하는 이유이다. 이 많은 플러그인(기능)들이 모여 현재의 eclipse를 동작하게 해준다.

 

예를들어 사진 중간에 있는 org.eclipse.jst.j2ee폴더를 삭제하게 된다면 Java Enterprise Edition관련 기능들을 사용할 수 없게된다(JSP, Servlet, JDBC 등등)

 

만약에 eclipse 내 마켓플레이스에서 추가적으로 플러그인을 설치하게 된다면 이 .plugins 폴더로 설치가 된다.

 

 

.lock

일단 정보가 너무 없다. 구글링을 이리저리 해보니 DDL 쿼리실행시 발생되는 트러블슈팅에 많이 인용되었다.

읽어보니 큰 관련이 없는 것 같다.

 

하지만 궁극의 구글링 끝에 12년전 포스팅자료를 찾았다.

https://www.tuning-java.com/37

 

[eclipse - 이클립스] Workspace in use or cannot be created, choose a different one. 이라는 메시지가 나타날때

Workspace in use or cannot be created, choose a different one. 이라는 메시지가 나타나면서, 이클립스에서는 다른 workspace를 선택하라는 화면이 나온다. 이 경우에는 평소에 사용하는 workspace를 변경해야..

www.tuning-java.com

내용을 추려보면 workspace 실행 불가 에러 시 .lock 파일을 삭제하거나 eclipse.exe 프로세스를 종료하라 하신다.

 

이부분을 의역해보자면 .lock 파일은 workspace에 대한 접근을 제어하는 파일로 추리할수 있겠다.

추후 정확한 내용은 추가적으로 포스팅 하겠다.

 

 

.log.txt

txt파일로 존재하는 log 파일은 말 그대로 해당 workspace에서 동작했던 이력, 에러 등의 data를 누적하는 파일이다.

 

.log.txt 파일 내용

사진과 같이 jdk version, connection database, entry/error log 등이 담겨져 있다.

 

 

version.ini

해당 workspace를 마지막으로 컴파일한 eclipse의 버전정보와 runtime data가 담겨져 있다.

 

 


 

지금까지 workspace 디렉토리 내 .metadata라는 녀석을 해부해 보았다.

모든 내용을 요약해서 많이 부족한 나의 견해를 내 보자면 metadata의 역할은 eclipse workspace의 모든 환경 구성요소, 관리 및 재사용을 위한 데이터들을 저장해둔 고간인듯 하다.

 

부족한 내용은 부지런히 포스팅 해야겠다.