ÇÁ·ÎÁ§Æ® ³×ÀÌó

org.eclipse.core.resources.natures

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

³×ÀÌó È®ÀåÁ¡À» »ç¿ëÇÏ¸é ³×ÀÌó ÀÛ¼º±â´Â ±âÈ£ À̸§À¸·Î ÀÚ½ÅÀÇ ³×ÀÌó ±¸ÇöÀ» µî·ÏÇÑ ´ÙÀ½ ÀÛ¾÷ °ø°£¿¡¼­ ³×ÀÌó ±¸ÇöÀ» »ç¿ëÇÏ¿© ³×ÀÌó¸¦ ã¾Æ ±¸¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ±âÈ£ À̸§Àº ³×ÀÌó È®ÀåÀÇ 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>


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


<!ELEMENT content-type EMPTY>

<!ATTLIST content-type

id CDATA #REQUIRED>


´ÙÀ½Àº ¼¼ °¡Áö ³×ÀÌó ±¸¼º¿¡ °üÇÑ ¿¹Á¦ÀÔ´Ï´Ù. 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() ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¿© ¼³¸íÀÚ ¿ÀºêÁ§Æ®¸¦ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù.

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