के साथ होने वाले परिवर्तनीय प्रतिस्थापन को रोकना buildout कॉन्फ़िगरेशन में परिवर्तनीय प्रतिस्थापन के लिए उपयोग किए गए जादू वर्णों से बचने का एक आसान तरीका है, जैसे स्ट्रिंग अकेली रहती है।बिल्डआउट
[part]
attribute = ${variable}
मैं नहीं है वास्तव में यह $ {चर} विस्तार करने के लिए, लेकिन वस्तुतः मान के रूप में छोड़ हैं: दूसरे शब्दों में, मैं कहाँ का कहना है।
प्रैक्टिस में मैं जिस विशिष्ट समस्या का सामना कर रहा हूं वह बिल्डआउट कॉन्फ़िगरेशन फ़ाइल में नहीं है, लेकिन नुस्खा 'collective.recipe.template' द्वारा संसाधित टेम्पलेट फ़ाइल में है। यह बिल्डआउट से समान वैरिएबल प्रतिस्थापन इंजन का उपयोग करता है जो कॉन्फ़िगरेशन फ़ाइलों में उपयोग किया जाता है। समस्या यह है कि जिस फ़ाइल को मैं टेम्पलेट के रूप में उपयोग करना चाहता हूं वह पहले से ही 'कॉन्फ़िगरेशन सिस्टम' के साथ संयोजन के रूप में अपने स्वयं के उद्देश्यों के लिए '$ {variable}' वाक्यविन्यास का उपयोग करता है जो अंत में फ़ाइल का उपभोग करता है। तो
[server-xml]
recipe = collective.recipe.template
input = templates/server.xml.in
output = ${product:build-directory}/conf/server.xml
dollar = $
टेम्पलेट इनपुट फ़ाइल में:
${dollar}{variable}
के बजाय:
${variable}
एक ही तरीका है मैं इस समस्या से बचने के लिए मिल गया है की तरह कुछ का उपयोग करने के लिए है
जो कि पहले से ही था।
यह क्या कर रहा है यह टेम्पलेट का उपयोग करके अनुभाग के खिलाफ 'डॉलर' विशेषता का एक लुकअप है और इसे '$' से प्रतिस्थापित करता है।
ऐसा करने के लिए, एक तरह से उम्मीद थी कि एक कर सकता है है के बजाय:
\${variable}
या शायद यह भी:
$${variable}
और समाप्त करने के लिए एक डमी विशेषता है करने के लिए की जरूरत जो मैं चाहता हूं उसे करने में इसे चालित करें।
बिल्डआउट के लिए स्रोत कोड को देखते हुए, जिस तरह से यह परिवर्तनीय प्रतिस्थापन से मेल खाता है, वह एक बचने की तंत्र प्रदान नहीं करता है।
यदि वास्तव में कोई रास्ता नहीं है, तो शायद कोई बिल्डआउट के लिए वैकल्पिक टेम्पलेटिंग रेसिपी के बारे में जानता है जो परिवर्तनीय विस्तार कर सकता है, लेकिन यह किसी भी तरह से वेरिएबल्स को इंगित करता है, जिससे कोई समस्या हो सकती है, जिससे कोई समस्या हो सकती है जहां हो सकता है टेम्पलेटिंग सिस्टम विस्तार तंत्र और फ़ाइल में शाब्दिक डेटा टेम्पलेट के बीच एक संघर्ष।