Utökningspunkten för naturer gör det möjligt för naturskrivare att registrera sin naturimplementation under ett symboliskt namn som sedan används från arbetsytan för att söka efter och köra naturer. Det symboliska namnet är id:et på utökningspunkten för naturen. När en utökningspunkt för en natur ska definieras, bör användarna inkludera ett värde som kan läsas av människor för "name"-attributet som identifierar innebörden och som potentiellt kan presenteras för användare.
Naturer kan ange relationsbegränsningar med andra naturer. Begränsningen "one-of-nature" anger att högst en natur som tillhör en viss uppsättning kan finnas i ett projekt samtidigt. Detta tvingar fram en ömsesidig exkludering mellan naturer som inte är kompatibla med varandra. Begränsningen "requires-nature" anger ett beroende av en annan natur. När en natur läggs till i ett projekt måste även alla obligatoriska naturer läggas till. Naturerna konfigureras och avkonfigureras på ett sådant sätt att deras obligatoriska naturer alltid konfigureras före dem och avkonfigureras efter dem. Av den anledningen tillåts inte cykliska beroenden mellan naturer.
Naturer kan inte läggas till eller tas bort från ett projekt om den ändringen bryter eventuella begränsningar som redan har uppfyllts. Om en natur konfigureras i ett projekt men du senare upptäcker att dess begränsningar inte har uppfyllts, markeras den naturen och alla naturer som naturen kräver som disabled, men förblir kvar i projektet. Detta kan till exempel inträffa när en obligatorisk natur saknas från installationen. Naturer som saknas från installationen och naturer som ingår i beroendecykler markeras också som "disabled".
Naturer kan även ange vilka eventuella inkrementella projektbyggfunktioner som har konfigureras av naturerna. Med den informationen kommer byggfunktioner endast att köras på arbetsytan när motsvarande natur existerar och är aktiverad i det projekt som byggs. Om en natur tas bort från ett projekt men naturens avkonfigureringsmetod misslyckas med att ta bort motsvarande byggfunktioner, kommer dessa byggfunktioner att tas bort från spec-filen automatiskt. Två naturer kan inte ange samma inkrementella projektbyggfunktion i sin märkordsuppsättning.
Naturer har också möjlighet att förbjuda att länkade resurser skapas i projekt som de är associerade till. Om allowLinking
-attributet sätts till "false" kan en natur deklarera att länkade resurser inte får skapas. Den här funktionen var ny i version 2.1.
Från och med version 3.1 kan naturer deklarera tillhörighet med godtyckliga innehållstyper, vilket påverkar hur innehållstyper anges för filer på arbetsytan. Om det uppstår konflikter (två eller fler innehållstyper anses vara lika lämpliga för en viss fil), kommer den innehållstyp som har tillhörighet med någon av naturerna som har konfigurerats för motsvarande projekt att väljas.
<!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>
Om dessa utökningar definierades i ett insticksprogram med id "com.xyz.coolplugin", skulle det fullständiga namnet på dessa naturer vara "com.xyz.coolplugin.fireNature", "com.xyz.coolplugin.waterNature" och "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. Detta program och medföljande material tillhandahålls under villkoren för Eclipse Public License v1.0 som medföljer denna distribution och finns tillgänglig på
http://www.eclipse.org/legal/epl-v10.html