ÇÁ·ÎÁ§Æ® ¼Ó¼º

org.eclipse.core.resources.natures

ÀÛ¾÷°ø°£¿¡¼­ ÇÁ·ÎÁ§Æ® ¼Ó¼º(Ãà¾àÇÏ¿© "¼Ó¼º"À̶ó°í ÇÔ)ÀÇ °³³äÀ» Áö¿øÇÕ´Ï´Ù. ¼Ó¼ºÀº ¶óÀÌÇÁ »çÀÌŬ µ¿ÀÛÀ» ÇÁ·ÎÁ§Æ®¿Í ¿¬°ü½Ãŵ´Ï´Ù. ¼Ó¼ºÀº org.eclipes.core.resources.IProject¿¡¼­ Á¤ÀÇµÈ setDescription ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¿© ÇÁ·ÎÁ§Æ®º°·Î ¼³Ä¡µÇ¸ç, ÇÁ·ÎÁ§Æ®°¡ ¿­¸± ¶§ ÀÚµ¿À¸·Î ±¸¼ºµÇ°í ÇÁ·ÎÁ§Æ®°¡ ¿Ï·áµÉ ¶§ ±¸¼ºµË´Ï´Ù. ¿¹¸¦ µé¾î, Java ¼Ó¼ºÀº ÇÁ·ÎÁ§Æ®¿¡ Ãß°¡µÉ ¶§ Java ºô´õ¸¦ ¼³Ä¡ÇÏ°í ´Ù¸¥ ÇÁ·ÎÁ§Æ® ±¸¼ºÀ» ÇÕ´Ï´Ù.

¼Ó¼º È®ÀåÁ¡À» »ç¿ëÇÏ¸é ¼Ó¼º ÀÛ¼º±â´Â ±âÈ£ À̸§À¸·Î ÀÚ½ÅÀÇ Æ¯¼º ±¸ÇöÀ» µî·ÏÇÑ ´ÙÀ½ ¼Ó¼ºÀ» ã¾Æ ±¸¼ºÇϱâ À§ÇØ ÀÛ¾÷°ø°£ ³»¿¡¼­ »ç¿ëµÇ°Ô µË´Ï´Ù. ±âÈ£ À̸§Àº ¼Ó¼º È®ÀåÀÇ IDÀÔ´Ï´Ù. ¼Ó¼º È®ÀåÀ» Á¤ÀÇÇÒ °æ¿ì Àǹ̸¦ ½Äº°ÇÏ°í »ç¿ëÀÚ¿¡°Ô Á¦°øµÉ ¼öµµ ÀÖ´Â "name" ¼Ó¼º¿¡ ÀÐÀ» ¼ö ÀÖ´Â °ªÀ» Æ÷ÇÔ½ÃŰ½Ê½Ã¿À.

¼Ó¼ºÀº ´Ù¸¥ ¼Ó¼º°úÀÇ °ü°è Á¦ÇÑÁ¶°ÇÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. "¼Ó¼º Áß Çϳª" Á¦ÇÑÁ¶°ÇÀº ÇØ´ç ÁýÇÕ¿¡ ¼ÓÇÑ ¼Ó¼º Çϳª¸¸ ƯÁ¤ÇÑ ½Ã°£¿¡ ÇÁ·ÎÁ§Æ®¿¡ Á¸ÀçÇÒ ¼ö ÀÖÀ½À» ÁöÁ¤ÇÕ´Ï´Ù. ÀÌ Á¦ÇÑÁ¶°ÇÀ» Àû¿ëÇÏ¸é ¼­·Î ȣȯ °¡´ÉÇÏÁö ¾ÊÀº ¼Ó¼ºµéÀÌ »óÈ£ ¹èÁ¦µË´Ï´Ù. "Çʼö ¼Ó¼º" Á¦ÇÑÁ¶°ÇÀº ´Ù¸¥ ¼Ó¼º¿¡ ´ëÇÑ Á¾¼Ó¼ºÀ» ÁöÁ¤ÇÕ´Ï´Ù. ¼Ó¼ºÀÌ ÇÁ·ÎÁ§Æ®¿¡ Ãß°¡µÇ¸é ¸ðµç Çʼö Á¶°Çµµ Ãß°¡µÇ¾î¾ß ÇÕ´Ï´Ù. ¼Ó¼ºÀÌ ±¸¼ºµÇ°í ±¸¼º ÇØÁ¦µÉ ¶§´Â Ç×»ó Çʼö ¼Ó¼ºÀÌ ¸ÕÀú ±¸¼ºµÇ°í ³ªÁß¿¡ ±¸¼º ÇØÁ¦µË´Ï´Ù. ÀÌ ¶§¹®¿¡ ¼Ó¼º °£ÀÇ ¼øÈ¯Àû Á¾¼Ó¼ºÀº Çã¿ëµÇÁö ¾Ê½À´Ï´Ù.

¼Ó¼º Ãß°¡³ª Á¦°Å·Î ÀÎÇØ ÀÌÀü¿¡ ¸¸Á·µÇ¾ú´ø Á¦ÇÑÁ¶°ÇÀÌ À§¹ÝµÇ´Â °æ¿ì ¼Ó¼ºÀº ÇÁ·ÎÁ§Æ®¿¡ Ãß°¡µÇ°Å³ª ÇÁ·ÎÁ§Æ®¿¡¼­ Á¦°ÅµÉ ¼ö ¾ø½À´Ï´Ù. ¼Ó¼ºÀÌ ÇÁ·ÎÁ§Æ®¿¡ ±¸¼ºµÇ¾îµµ ³ªÁß¿¡ Á¦ÇÑÁ¶°ÇÀÌ ¸¸Á·µÇÁö ¾Ê´Â °ÍÀÌ ¹ß°ßµÇ¸é ÇØ´ç ¼Ó¼º ¹× ÀÌ ¼Ó¼ºÀ» ¿ä±¸ÇÏ´Â ¸ðµç ¼Ó¼ºÀÌ »ç¿ë ºÒ°¡´ÉÀ¸·Î Ç¥½ÃµÇÁö¸¸ ÇÁ·ÎÁ§Æ®¿¡´Â ³²¾Æ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¸é ÀÌ·± »óȲÀº Çʼö ¼Ó¼ºÀÌ ¼³Ä¡¿¡¼­ ´©¶ôµÉ °æ¿ì¿¡ ¹ß»ýÇÕ´Ï´Ù. ¼³Ä¡¿¡¼­ ´©¶ôµÈ ¼Ó¼º ¹× Á¾¼Ó¼º ÁÖ±â¿Í °ü·ÃµÈ ¼Ó¼ºµµ »ç¿ë ºÒ°¡´ÉÀ¸·Î Ç¥½ÃµË´Ï´Ù.

¼Ó¼ºÀº ±¸¼ºÇÒ ÁõºÐ ÇÁ·ÎÁ§Æ® ºô´õµµ ÁöÁ¤ÇÕ´Ï´Ù. ÀÛ¾÷°ø°£Àº ÀÌ Á¤º¸¸¦ »ç¿ëÇÏ¿© ÇØ´ç ¼Ó¼ºÀÌ ºôµåµÇ´Â ÇÁ·ÎÁ§Æ®¿¡ Á¸ÀçÇÏ°í »ç¿ë °¡´ÉÇÒ ¶§¸¸ ºô´õ°¡ ½ÇÇàµÇµµ·Ï ÇÕ´Ï´Ù. ¼Ó¼ºÀÌ ÇÁ·ÎÁ§Æ®¿¡¼­ Á¦°ÅµÇ¾úÁö¸¸ ¼Ó¼ºÀÇ ±¸¼º ÇØÁ¦ ¸Þ¼Òµå°¡ ÇØ´ç ºô´õ¸¦ Á¦°ÅÇÏÁö ¸øÇÑ °æ¿ì ÀÛ¾÷°ø°£Àº ½ºÆå¿¡¼­ ÇØ´ç ºô´õ¸¦ ÀÚµ¿À¸·Î Á¦°ÅÇÕ´Ï´Ù. µÎ ¼Ó¼ºÀÌ ¸¶Å©¾÷¿¡¼­ °°Àº ÁõºÐ ÇÁ·ÎÁ§Æ® ºô´õ¸¦ ÁöÁ¤ÇÏ´Â °ÍÀº Çã¿ëµÇÁö ¾Ê½À´Ï´Ù.

¼Ó¼º¿¡´Â ¶ÇÇÑ ¿¬°üµÈ ÇÁ·ÎÁ§Æ®¿¡¼­ ¸µÅ©µÈ ÀÚ¿øÀÇ ÀÛ¼ºÀ» ±ÝÁöÇÏ´Â ±â´Éµµ ÀÖ½À´Ï´Ù. allowLinking ¼Ó¼ºÀ» "false"·Î ¼³Á¤ÇÏ¿© ¼Ó¼ºÀº ¸µÅ©µÈ ÀÚ¿øÀÌ ÀÛ¼ºµÇÁö ¾Êµµ·Ï ¼±¾ðÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ±â´ÉÀº ¸±¸®½º 2.1¿¡¼­ »õ·Î ÀÛ¼ºµÇ¾ú½À´Ï´Ù.

<!ELEMENT extension (runtime , (one-of-nature | requires-nature | builder)* , options?)>

<!ATTLIST extension

point CDATA #REQUIRED

id    CDATA #IMPLIED

name  CDATA #IMPLIED>


<!ELEMENT runtime (run)>



<!ELEMENT run (parameter*)>

<!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) >


´ÙÀ½Àº ¼¼ °¡Áö ¼Ó¼º ±¸¼º¿¡ °üÇÑ ¿¹Á¦ÀÔ´Ï´Ù. waterNature ¹× fireNature´Â °°Àº µ¶Á¡ ÁýÇÕ¿¡ ¼ÓÇϹǷΠ°°Àº ÇÁ·ÎÁ§Æ®¿¡¼­ °øÁ¸ÇÒ ¼ö ¾ø½À´Ï´Ù. snowNature´Â waterNature¸¦ ÇÊ¿ä·Î Çϱ⠶§¹®¿¡ snowNature´Â waterNature°¡ ¾ø´Â ÇÁ·ÎÁ§Æ®¿¡¼­ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. ÀÌ¿¡ µû¶ó snowNature´Â fireNature°¡ ÀÖ´Â ÇÁ·ÎÁ§Æ®¿¡¼­´Â »ç¿ëÇÒ ¼ö ¾ø°Ô µË´Ï´Ù. fireNatureµµ ¸µÅ©µÈ ÀÚ¿øÀÇ ÀÛ¼ºÀ» Çã¿ëÇÏÁö ¾Ê½À´Ï´Ù.

 
   

<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>

ÀÌ È®ÀåÀÌ ID°¡ "com.xyz.coolplugin"ÀÎ Ç÷¯±×Àο¡¼­ Á¤ÀÇµÈ °æ¿ì ÀÌ ¼Ó¼ºÀÇ ¿ÏÀüÇÑ À̸§Àº "com.xyz.coolplugin.fireNature", "com.xyz.coolplugin.waterNature" ¹× "com.xyz.coolplugin.snowNature"ÀÔ´Ï´Ù.

Ŭ·¡½º ¼Ó¼º °ª¿¡¼­ org.eclipse.core.resources.IProjectNature ±¸ÇöÀÚ¸¦ Ç¥½ÃÇØ¾ß ÇÕ´Ï´Ù. org.eclipse.core.resources.IProjectNatureDescriptor ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇÏ¿© ¼Ó¼º Á¤ÀǸ¦ Á¶»çÇÒ ¼ö ÀÖ½À´Ï´Ù. org.eclipse.core.resources.IWorkspace¿¡¼­ getNatureDescriptor(String) ¹× getNatureDescriptors() ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¿© ¼³¸íÀÚ ¿ÀºêÁ§Æ®¸¦ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù.

Ç÷§Æû¿¡ »çÀü Á¤ÀÇµÈ ¼Ó¼ºÀÌ ¾ø½À´Ï´Ù. ÇÊ¿äÇÑ °æ¿ì ƯÁ¤ Á¦Ç° ¼³Ä¡¿¡ ÇÊ¿äÇÑ ¼Ó¼ºÀÌ Æ÷Ç﵃ ¼ö ÀÖ½À´Ï´Ù.