2009-12-03 9 views
5

मेरे पास कई फ़ाइल/निष्पादन योग्य स्थान हैं जो कि कंप्यूटर पर चल रहे कंप्यूटर के आधार पर भिन्न होने की संभावना है, और मैं इन्हें किसी भी तरह से चींटी गुणों के माध्यम से सार करना चाहता हूं। ऐसा करने का सबसे अच्छा तरीका क्या है? क्या एक सिस्टम-व्यापी चींटी सेटअप स्क्रिप्ट है जिसे बुलाया जाता है? या क्या मैं ऐसी स्क्रिप्ट कर सकता हूं?चींटी: प्रणाली-निर्भर गुणों को स्थापित करने का सबसे अच्छा तरीका?

उत्तर

1

Properties.xml नामक एक चींटी बिल्ड फ़ाइल सेट अप करें, जिसमें आपको उन गुणों को परिभाषित करना चाहिए जिन्हें आप कस्टमाइज़ करना चाहते हैं।

यहाँ properties.xml बॉयलरप्लेट मैं अपनी परियोजनाओं के लिए उपयोग कर रहा हूँ है (मैं इसे चींटी पर पुस्तकों में से एक से अनुकूलित किया है):

<?xml version="1.0" encoding="UTF-8"?> 
<project 
    name="workspace-properties" 
> 
    <dirname 
    property="workspace-properties.basedir" 
    file="${ant.file.workspace-properties}" 
    /> 

    <!-- 
    ========================================================== 
    Load Environment Variables 
    ========================================================== 
    --> 
    <!-- #Load environment variables --> 
    <property environment="env" /> 

    <!-- this is here to deal with the fact that an IntelliJ IDEA build 
    has no ant home 
    --> 
    <property 
    name="ant.home" 
    value="${env.ANT_HOME}" 
    /> 

    <!-- get Unix hostname, and set to Windows comparable name --> 
    <!-- #Trick to get host name x-platform --> 
    <property 
    name="env.COMPUTERNAME" 
    value="${env.HOSTNAME}" 
    /> 

    <!-- 
    ========================================================== 
    Load property files 
    Note: the ordering is VERY important. 
    ========================================================== 
    --> 
    <!-- #Allow even users property file to relocate --> 
    <property 
    name="user.properties.file" 
    location="${user.home}/.build.properties" 
    /> 

    <!-- Load the application specific settings --> 
    <!-- #Project specific props --> 
    <property file="build.properties" /> 

    <!-- 
    ========================================================== 
    Define your custom properties here. 
    You can overwrite them through build.properties and 
    ${user.home}/.build.properties 
    ========================================================== 
    --> 

    <property name="myexec1" location="/usr/bin/myexec1"/> 
    <property name="myexec2" location="/usr/bin/myexec2"/> 

</project> 

महत्वपूर्ण यहाँ बात के रूप में कई उपयोगी डिफ़ॉल्ट साथ आने के लिए है संपत्ति मूल्य जितना संभव हो, तो आप कस्टम build.properties फ़ाइलों के साथ कभी भी नहीं आ सकते हैं।

फिर आप अपनी परियोजना के build.xml में यह फ़ाइल <import> फ़ाइल करते हैं।

<project 
    name="my-project" 
> 
    <!-- this is done, so you may import my-project somewhere else --> 
    <dirname 
    property="my-project.basedir" 
    file="${ant.file.my-project}" 
    /> 

    <import file="${my-project.basedir}/relative/path/to/properties.xml"/> 

    <target name="using.myexec1"> 
    <echo message="myexec1=${myexec1}"/> 
    </target> 
</project> 

आप my-project में myexec1 के लिए एक कस्टम मूल्य चाहते हैं, सिर्फ एक ही निर्देशिका है जहाँ build.xml स्थित है में एक कस्टम फ्लैट build.properties फ़ाइल ड्रॉप।

build.properties फ़ाइल इस तरह दिखना हो सकता है:

myexec1=c:/custom/path/to/myexec1.exe 
+0

यहाँ अपने 'होस्ट नाम एक्स मंच समस्या के लिए एक काम समाधान है, बस का उपयोग करें: <कार्यकारी निष्पादन = "होस्ट नाम" outputproperty = "computer.hostname" /> लिनक्स और विंडोज – Rebse

8

मैं और अधिक या कम मानक build.properties और build-local.properties फ़ाइलों का उपयोग करें।

पहले में सभी मानकों के लिए सामान्य डिफ़ॉल्ट मान होते हैं, दूसरा केवल अपवाद। पहला व्यक्ति उपversण में चेक किया गया है जबकि दूसरा नहीं है।

संपादित: प्रतिलिपि करने/चिपकाने AKR उत्तम विचार

इसके अलावा आप एक डिफ़ॉल्ट गुण हो सकता है ओएस या अन्य में से प्रत्येक के लिए फ़ाइल आप पर अपने निर्माण प्रणाली की तैनाती हो सकती है। इन फ़ाइलों को आपके संस्करण नियंत्रण प्रणाली में भी चेक किया जा सकता है।

चींटी स्क्रिप्ट तो सभी फ़ाइलों को शामिल किया जाएगा इस प्रकार (याद रखें: चींटी में पहली परिभाषा जीतता):

<property file="build-local.properties"/> 
<property file="build.properties"/> 
<property file="build-${os.name}.properties"> 
+0

तो क्यों निर्माण-स्थानीय पर काम करेंगे प्रथम? –

+0

@ कालपेशसोनी क्योंकि इसके साथ आप स्थानीय फाइलों में सभी गुणों को ओवरराइड कर सकते हैं (क्योंकि यह लोड किया गया पहला है)। जो मुझे लगता है वह गलत है ओएस निर्भर फ़ाइल है, क्योंकि इसे डिफ़ॉल्ट फ़ाइल को ओवरराइड करना होगा, इसलिए इसे दूसरा दिखाई देना चाहिए। – PhoneixS

10

व्लादिमीर समाधान के अलावा आप एक डिफ़ॉल्ट गुण हो सकता है ओएस में से प्रत्येक के लिए फ़ाइल या अन्य आप अपने निर्माण प्रणाली को तैनात कर सकते हैं। पथ स्थापित करने के लिए $ {os.name} (और अन्य जावा सिस्टम गुण) का उपयोग करें। उदाहरण के लिए

<property file="build-${os.name}.properties"> 

इन फ़ाइलों को आपके संस्करण नियंत्रण प्रणाली में भी बनाए रखा जा सकता है और चेक किया जा सकता है।

+0

+1 अच्छा विचार। मुझे विभिन्न फाइलों पर 'फ़ाइल: ///' और 'फ़ाइल: //' के साथ कुछ परेशानी हुई है और आपका प्रस्ताव इस मामले को अच्छी तरह से संभालेगा। – Vladimir

संबंधित मुद्दे