네이처 확장점을 사용하면 네이처 작성기는 기호 이름으로 자신의 네이처 구현을 등록한 다음 작업 공간에서 네이처 구현을 사용하여 네이처를 찾아 구성할 수 있습니다. 기호 이름은 네이처 확장의 ID입니다. 네이처 확장을 정의할 경우, 의미를 식별하고 사용자에게 제공될 수도 있는 "name" 네이처에 읽을 수 있는 값을 포함하는 것이 바람직합니다.
네이처는 다른 네이처와의 관계 제한조건을 지정할 수 있습니다. "네이처 중 하나" 제한조건은 해당 세트에 속한 네이처 하나만 특정한 시간에 프로젝트에 존재할 수 있도록 지정합니다. 이 제한조건을 적용하면 서로 호환 가능하지 않은 네이처들이 상호 배제됩니다. "필수 네이처" 제한조건은 다른 네이처에 대한 종속성을 지정합니다. 네이처가 프로젝트에 추가되면 모든 필수 조건도 추가되어야 합니다. 네이처가 구성되고 구성 해제될 때는 항상 필수 네이처가 먼저 구성되고 나중에 구성 해제됩니다. 이 때문에 네이처 간의 순환적 종속성은 허용되지 않습니다.
네이처 추가나 제거로 인해 이전에 충족되었던 제한조건이 위반되는 경우 네이처는 프로젝트에 추가되거나 프로젝트에서 제거될 수 없습니다. 네이처가 프로젝트에 구성되어도 나중에 제한조건이 충족되지 않는 것이 발견되면, 해당 네이처 및 이 네이처를 요구하는 모든 네이처가 사용 안함으로 표시되지만 프로젝트에는 남아 있습니다. 예를 들어, 이런 상황은 필수 네이처가 설치에서 누락될 경우에 발생합니다. 설치에서 누락된 네이처 및 종속성 주기와 관련된 네이처도 사용 안함으로 표시됩니다.
네이처는 구성할 증분 프로젝트 빌더도 지정할 수 있습니다. 작업공간에서는 이 정보를 사용하여 해당 네이처가 빌드되는 프로젝트에 존재하고 사용 가능할 때만 빌더가 실행되도록 합니다. 네이처가 프로젝트에서 제거되었지만 네이처의 구성 해제 메소드가 해당 빌더를 제거하지 못한 경우 작업공간은 스펙에서 해당 빌더를 자동으로 제거합니다. 두 네이처가 마크업에서 같은 증분 프로젝트 빌더를 지정하는 것은 허용되지 않습니다.
네이처에는 또한 연관된 프로젝트에서 링크된 자원의
작성을 금지하는 기능도 있습니다. allowLinking
네이처를 "false"로 설정하면 네이처는 링크된 자원이 작성되지 않도록
선언할 수 있습니다. 이 기능은 릴리스 2.1에서 새로운 기능입니다.
릴리스 3.1에서부터, 네이처가 임의 컨텐츠 유형과의 연관성을 선언할 수 있는데, 이는 작업공간의 파일에서 컨텐츠 유형 판별이 발생하는 방법에 영향을 줍니다. 충돌이 있는 경우(둘 이상의 컨텐츠 유형이 주어진 파일에 대해 동일하게 적합해 보이는 경우) 대응하는 프로젝트에 구성된 네이처 중 하나와 연관성이 있는 컨텐츠 유형이 선택됩니다.
<!ELEMENT extension (runtime , (one-of-nature | requires-nature | builder | content-type)* , options?)>
<!ATTLIST extension
point CDATA #REQUIRED
id CDATA #REQUIRED
name CDATA #IMPLIED>
<!ATTLIST run
class CDATA #REQUIRED>
<!ELEMENT parameter EMPTY>
<!ATTLIST parameter
name CDATA #REQUIRED
value CDATA #REQUIRED>
<!ELEMENT one-of-nature EMPTY>
<!ATTLIST one-of-nature
id CDATA #REQUIRED>
<!ELEMENT requires-nature EMPTY>
<!ATTLIST requires-nature
id CDATA #REQUIRED>
<!ELEMENT builder EMPTY>
<!ATTLIST builder
id CDATA #REQUIRED>
<!ELEMENT options EMPTY>
<!ATTLIST options
allowLinking (true | false) >
<!ELEMENT content-type EMPTY>
<!ATTLIST content-type
id CDATA #REQUIRED>
이 확장이 ID가 "com.xyz.coolplugin"인 플러그인에서 정의된 경우, 이 네이처의 완전한 이름은 "com.xyz.coolplugin.fireNature", "com.xyz.coolplugin.waterNature" 및 "com.xyz.coolplugin.snowNature"입니다.<extension id=
"fireNature"
name=
"Fire Nature"
point=
"org.eclipse.core.resources.natures"
>
<runtime>
<run class=
"com.xyz.natures.Fire"
/>
</runtime>
<one-of-nature id=
"com.xyz.stateSet"
/>
<options allowLinking=
"false"
/>
</extension>
<extension id=
"waterNature"
name=
"Water Nature"
point=
"org.eclipse.core.resources.natures"
>
<runtime>
<run class=
"com.xyz.natures.Water"
/>
</runtime>
<one-of-nature id=
"com.xyz.stateSet"
/>
</extension>
<extension id=
"snowNature"
name=
"Snow Nature"
point=
"org.eclipse.core.resources.natures"
>
<runtime>
<run class=
"com.xyz.natures.Snow"
>
<parameter name=
"installBuilder"
value=
"true"
/>
</run>
</runtime>
<requires-nature id=
"com.xyz.coolplugin.waterNature"
/>
<builder id=
"com.xyz.snowMaker"
/>
</extension>
Copyright (c) 2002, 2005 IBM Corporation and others.
All rights reserved. 본 프로그램 및 본 프로그램에 동봉되는 자료는 본 배포물에 동봉되는 Eclipse Public License v1.0의 조항에 따라 사용해야 하며
웹 사이트(http://www.eclipse.org/legal/epl-v10.html)에서도 관련 사항을 참조할 수 있습니다.