2014-11-10 9 views
5

build.xmlमैं एक हाइफ़न नामक एक कार्य को कैसे परिभाषित कर सकता हूं?

<taskdef 
    onerror ="ignore" 
    name  ="monitor-client" 
    classpath="${jar-client}" 
    classname="hpms.app.mon.client.AntTask" /> 

<target name="run-client" depends="compile-sample" description="Launch monitor"> 
    <monitor-client 
     layout  ="Layout.xml" 
     gui   ="true" 
     autostart ="true"> 
     <log-server 
     port ="3000" 
     capacity="2048" /> 
... 

AntTask.java

public final class AntTask extends Task { 

    private ... 

    public void setLayout(String layout) { 
    } 

    public void setGui(boolean gui) { 
    } 

    public void setAutostart(boolean autostart) { 
    } 

    public void addConfiguredLogServer(LogServer logServer) { 
    } 

    @Override 
    public void execute() { 
     ... 
    } 
} 

निष्पादन

Buildfile: ...\build.xml 
compile-sample: 
run-client: 

BUILD FAILED 
...\build.xml:116: monitor-client doesn't support the nested "log-server" element. 

प्रश्न

मैं तत्वों और विशेषताओं और जावा भाषा के मानचित्रण नियमों के लिए लागू नामकरण नियमों की खोज करता हूं।

+1

मैं इस जो मुझे लगता है कि आप क्या चाहते हैं करता पाया: http://mail-archives.apache.org/mod_mbox/ant-dev/201009.mbox/%[email protected]%3E – matt

उत्तर

1

mattcomment पर आधारित उत्तर, उनके लिए बहुत धन्यवाद!

  1. प्रतिबिंब जावा के नाम पर आधारित, एक्सएमएल अनदेखी मामले के रूप में manoutianswer से समझाने में मैप:

    अपाचे चींटी तत्व की पहचान करने के दो तरीके और विशेषताओं का उपयोग।

  2. इंटरफेस आधारित। org.apache.tools.ant.DynamicElement और org.apache.tools.ant.AttributeElement

इंटरफेस के रूप में नीचे दिखाया गया है, जावा पहचानकर्ता के लिए एक्सएमएल पहचानकर्ता मैप करने के लिए जब विशेष वर्ण हाइफन की तरह उपयोग किया जाता है इस्तेमाल किया जाना चाहिए:

import org.apache.tools.ant.DynamicElement; 
import org.apache.tools.ant.Task; 

public final class AntTask extends Task implements DynamicElement { 

    private ... 

    public void setLayout(String layout) { 
    } 

    public void setGui(boolean gui) { 
    } 

    @Override 
    public Object createDynamicElement(String name) { 
     if(name.equals("log-server")) { 
     return new Logserver(); 
     } 
     return null; 
    } 

    ... 

    @Override 
    public void execute() { 
    } 
} 
1

org.apache.tools.ant.IntrospectionHelper वह वर्ग है जो सेटटर विधियों से विशेषताओं को निकालने के लिए आत्मनिरीक्षण करता है।

निर्माता की Javadocs से

:

void setFoo(Bar), विशेषता foo का मान सेट इतने लंबे समय Bar गैर शून्य है और एक सरणी प्रकार नहीं है के रूप में के लिए एक विधि के रूप में मान्यता प्राप्त है। गैर-स्ट्रिंग पैरामीटर प्रकार हमेशा स्ट्रिंग पैरामीटर प्रकारों को अधिभारित करते हैं, लेकिन प्राथमिकता के मामले में यह एकमात्र गारंटी है।

+0

धन्यवाद। मैंने विधि प्राप्त की हैप्रॉपर्टीनाम(): 'methodName.substring (prefix.length())। ToLowerCase (Locale.ENGLISH)'। मुझे समझ में आया है कि समस्या विधि का नाम नहीं है लेकिन एक्सएमएल के लिए मैपिंग है। चूंकि हायफ़ेन जावा पहचानकर्ता में प्रकट नहीं हो सकता है, इसलिए इसका उपयोग एक्सएमएल में नहीं किया जा सकता है। – Aubin

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

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