¼³¸í: ÀÛ¾÷°ø°£Àº ÇÁ·ÎÁ§Æ® ¼Ó¼º(Ãà¾àÇüÀ¸·Î "¼Ó¼º") °³³äÀ» Áö¿øÇÕ´Ï´Ù. ¼Ó¼ºÀº ¶óÀÌÇÁ »çÀÌŬ ÀÛµ¿À» ÇÁ·ÎÁ§Æ®¿¡ ¿¬°ü½Ãŵ´Ï´Ù. ¼Ó¼ºÀº org.eclipse.core.resources.IProject¿¡ Á¤ÀÇµÈ setDescription ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¿© ÇÁ·ÎÁ§Æ®º°·Î ¼³Ä¡µË´Ï´Ù. ¼Ó¼ºÀº ÇÁ·ÎÁ§Æ®¿¡ Ãß°¡µÉ ¶§ ÀÚµ¿À¸·Î ±¸¼ºµÇ°í ÇÁ·ÎÁ§Æ®¿¡¼ Á¦°ÅµÉ ¶§ ±¸¼ºÀÌ ÇØÁ¦µË´Ï´Ù. ¿¹¸¦ µé¾î Java ¼Ó¼ºÀº Java ºô´õ¸¦ ¼³Ä¡Çϸç ÇÁ·ÎÁ§Æ®¿¡ Ãß°¡µÉ ¶§ ±âŸ ÇÁ·ÎÁ§Æ® ±¸¼ºÀ» ¼öÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.
¼Ó¼º È®ÀåÁ¡À» »ç¿ëÇÏ¸é ¼Ó¼º ÀÛ¼º±â´Â ±âÈ£ À̸§À¸·Î ÀÚ½ÅÀÇ Æ¯¼º ±¸ÇöÀ» µî·ÏÇÑ ´ÙÀ½ ¼Ó¼ºÀ» ã¾Æ ±¸¼ºÇϱâ À§ÇØ ÀÛ¾÷°ø°£ ³»¿¡¼ »ç¿ëµÇ°Ô µË´Ï´Ù. ±âÈ£ À̸§Àº ¼Ó¼º È®ÀåÀÇ IDÀÔ´Ï´Ù. »ç¿ëÀÚ°¡ ¼Ó¼º È®ÀåÀ» Á¤ÀÇÇÒ ¶§ »ç¶÷ÀÌ ÀÐÀ» ¼ö ÀÖ´Â °ªÀ» "name" ¼Ó¼º¿¡ ÁöÁ¤ÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù. ÀÌ À̸§ ¼Ó¼ºÀº Àǹ̸¦ ½Äº°ÇÏ¿© »ç¿ëÀÚ¿¡°Ô Ç¥½ÃµÉ ¼öµµ ÀÖ½À´Ï´Ù.
¼Ó¼ºÀº ´Ù¸¥ ¼Ó¼º°úÀÇ °ü°è Á¦ÇÑÁ¶°ÇÀ» ÁöÁ¤ÇÕ´Ï´Ù. "one-of-nature" Á¦ÇÑÁ¶°ÇÀº ÁÖ¾îÁø ¼¼Æ®¿¡ ¼ÓÇÑ ÃÖ´ë ÇϳªÀÇ ¼Ó¼º¸¸ÀÌ ÁÖ¾îÁø ¼ø°£¿¡ ÇÑ ÇÁ·ÎÁ§Æ®¿¡¼ Á¸ÀçÇÒ ¼ö ÀÖÀ½À» ÁöÁ¤ÇÕ´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ¼·Î ȣȯµÇÁö ¾Ê´Â ¼Ó¼º °£ÀÇ »óÈ£ ¹èŸ¼ºÀÌ Àû¿ëµË´Ï´Ù. "requires-nature" Á¦ÇÑÁ¶°ÇÀº ´Ù¸¥ ¼Ó¼º¿¡ ´ëÇÑ Á¾¼Ó¼ºÀ» ÁöÁ¤ÇÕ´Ï´Ù. ¼Ó¼ºÀÌ ÇÁ·ÎÁ§Æ®¿¡ Ãß°¡µÉ ¶§ ¸ðµç Çʼö ¼Ó¼ºµµ Ãß°¡µÇ¾î¾ß ÇÕ´Ï´Ù. ¼Ó¼ºÀº Çʼö ¼Ó¼ºÀÌ Ç×»ó ¸ÕÀú ±¸¼ºµÇ°í ³ªÁß¿¡ ±¸¼º ÇØÁ¦µÇ´Â ¹æ½ÄÀ¸·Î ±¸¼ºµÇ°í ±¸¼º ÇØÁ¦µË´Ï´Ù. µû¶ó¼ ¼Ó¼º °£ÀÇ ¼øÈ¯ Á¾¼Ó¼ºÀÌ Çã¿ëµÇÁö ¾Ê½À´Ï´Ù.
¼Ó¼º Ãß°¡³ª Á¦°Å·Î ÀÎÇØ ÀÌÀü¿¡ ¸¸Á·µÇ¾ú´ø Á¦ÇÑÁ¶°ÇÀÌ À§¹ÝµÇ´Â °æ¿ì ¼Ó¼ºÀº ÇÁ·ÎÁ§Æ®¿¡ Ãß°¡µÇ°Å³ª ÇÁ·ÎÁ§Æ®¿¡¼ Á¦°ÅµÉ ¼ö ¾ø½À´Ï´Ù. ¼Ó¼ºÀÌ ÇÁ·ÎÁ§Æ®¿¡ ±¸¼ºµÇ¾îµµ ³ªÁß¿¡ Á¦ÇÑÁ¶°ÇÀÌ ¸¸Á·µÇÁö ¾Ê´Â °ÍÀÌ ¹ß°ßµÇ¸é ÇØ´ç ¼Ó¼º ¹× ÀÌ ¼Ó¼ºÀ» ¿ä±¸ÇÏ´Â ¸ðµç ¼Ó¼ºÀÌ »ç¿ë ºÒ°¡´ÉÀ¸·Î Ç¥½ÃµÇÁö¸¸ ÇÁ·ÎÁ§Æ®¿¡´Â ³²¾Æ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¸é ÀÌ·± »óȲÀº Çʼö ¼Ó¼ºÀÌ ¼³Ä¡¿¡¼ ´©¶ôµÉ °æ¿ì¿¡ ¹ß»ýÇÕ´Ï´Ù. ¼³Ä¡¿¡¼ ´©¶ôµÈ ¼Ó¼º ¹× Á¾¼Ó¼º ÁÖ±â¿Í °ü·ÃµÈ ¼Ó¼ºµµ »ç¿ë ºÒ°¡´ÉÀ¸·Î Ç¥½ÃµË´Ï´Ù.
¼Ó¼ºÀº ¼Ó¼º¿¡¼ ±¸¼ºµÇ´Â ÁõºÐ ÇÁ·ÎÁ§Æ® ºô´õ(ÀÖ´Ù¸é)¸¦ ÁöÁ¤ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ Á¤º¸¸¦ »ç¿ëÇÏ¿© ºôµåµÇ´Â ÇÁ·ÎÁ§Æ®¿¡ ´ëÀÀÇÏ´Â ¼Ó¼ºÀÌ ÀÖ°í ÀÌ ¼Ó¼ºÀÌ »ç¿ë °¡´ÉÇÑ °æ¿ì¿¡¸¸ ÀÛ¾÷°ø°£¿¡¼ ºô´õ°¡ ½ÇÇàµË´Ï´Ù. ¼Ó¼ºÀÌ ÇÁ·ÎÁ§Æ®¿¡¼ Á¦°ÅµÇÁö¸¸ ¼Ó¼ºÀÇ ±¸¼º ÇØÁ¦ ¸Þ¼Òµå°¡ ´ëÀÀÇÏ´Â ºô´õ¸¦ Á¦°ÅÇÏÁö ¸øÇϸé ÀÛ¾÷°ø°£Àº ºôµå ½ºÆå¿¡¼ ÀÚµ¿À¸·Î ÇØ´ç ºô´õ¸¦ Á¦°ÅÇÕ´Ï´Ù. µÎ °³ÀÇ ¼Ó¼ºÀÌ ¸¶Å©¾÷¿¡¼ °°Àº ÁõºÐ ÇÁ·ÎÁ§Æ® ºô´õ¸¦ ÁöÁ¤ÇÏ´Â °ÍÀº Çã¿ëµÇÁö ¾Ê½À´Ï´Ù.
±¸¼º ¸¶Å©¾÷:
<!ELEMENT runtime run?>
<!ELEMENT run parameter*>
<!ATTLIST run
class
CDATA #REQUIRED
>
¿¹:
´ÙÀ½Àº ¼¼ °¡Áö ¼Ó¼º ±¸¼ºÀÇ ¿¹Á¦ÀÔ´Ï´Ù. waterNature ¹× fireNature´Â °°Àº µ¶Á¡ ¼¼Æ®¿¡ ¼ÓÇϹǷΠ°°Àº ÇÁ·ÎÁ§Æ®¿¡ °øÁ¸ÇÒ ¼ö ¾ø½À´Ï´Ù. snowNature´Â waterNature°¡ ÇÊ¿äÇϹǷΠsnowNature´Â waterNature°¡ ´©¶ôµÈ ÇÁ·ÎÁ§Æ®¿¡¼ »ç¿ë ºÒ°¡´ÉÇÕ´Ï´Ù. µû¶ó¼ snowNature´Â 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"/>
</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"ÀÔ´Ï´Ù.
API Á¤º¸: class ¼Ó¼º °ªÀº org.eclipse.core.resources.IProjectNatureÀÇ ±¸ÇöÀÚ¸¦ ³ªÅ¸³»¾ß ÇÕ´Ï´Ù. org.eclipse.core.resources.IProjectNatureDescriptor ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇÏ¿© ¼Ó¼º Á¤ÀǸ¦ Á¶»çÇÒ ¼ö ÀÖ½À´Ï´Ù. org.eclipse.core.resources.IWorkspace¿¡¼ getNatureDescriptor(String) ¹× getNatureDescriptors() ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¿© ÀÌ ¼³¸íÀÚ ¿ÀºêÁ§Æ®¸¦ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù.
±âº» Á¦°ø ±¸Çö: Ç÷§Æû¿¡ ¹Ì¸® Á¤ÀÇµÈ ¼Ó¼ºÀº ¾ø½À´Ï´Ù. ÇÊ¿äÇÑ °æ¿ì ƯÁ¤ Á¦Ç° ¼³Ä¡¿¡ ÇÊ¿äÇÑ ¼Ó¼ºÀÌ Æ÷Ç﵃ ¼ö ÀÖ½À´Ï´Ù.