2013-01-09 29 views
6

वर्तमान में, मुझे पता है कि Maven का उपयोग कर छानने के इस प्रकार करना है:जावा एनोटेशन के लिए मेवेन-गुण-फ़िल्टरिंग-जैसी?

pom.xml

<properties> 
    <foo>bar</foo> 
</properties> 

app.properties

foo=${foo} 

लेकिन यह करने के लिए संभव है मेवेन, स्प्रिंग या किसी अन्य उपकरण का उपयोग करके उस तरह का फ़िल्टरिंग?

MyClass.java

@MyAnnotation("${foo}") // ${foo} should get replaced at compile time 
public void getData() { 
    return data; 
} 
+0

आप जेनरेट स्रोत चरण पर अपनी स्रोत फ़ाइलों पर मेवेन संसाधन फ़िल्टरिंग का उपयोग कर सकते हैं - कुछ * गैर-स्रोत निर्देशिका (बेहतर उपयोग/संसाधन) के तहत अपनी * .java फ़ाइलों को रखें, और उस चरण में उन्हें जेनरेट करने के लिए कॉपी करें स्रोत निर्देशिका – radai

+0

इसका मतलब यह होगा कि आपकी एनोटेशन में एक के लिए 'स्रोत' प्रतिधारण नीति होनी चाहिए। और आप बूट करने के लिए सोर्स कोड पैच करना चाहते हैं? शुभकामनाएँ: पी – fge

उत्तर

7

आप संसाधन प्लग-इन का निष्पादन उपयोग करने की कोशिश है। आप इसे अपने जावा स्रोत पर इंगित कर सकते हैं और जहां तक ​​मुझे पता है, इसकी सामान्य फ़िल्टरिंग का उपयोग करें।

http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html

<properties> 
    <my.name>chad</my.name> 
    <java.property>//comment</java.property> 
    </properties> 

    <build> 
    <sourceDirectory>target/processed-source/java</sourceDirectory> 
    <resources> 
     <resource> 
      <directory>src/main/resources</directory> 
      <filtering>true</filtering> 
     </resource> 

     <resource> 
      <directory>src/main/java</directory> 
      <filtering>true</filtering> 
      <targetPath>../processed-source/java</targetPath> 
     </resource> 
    </resources> 

    </build> 

तो, पहली बात यह है कि आप मार्ग लक्ष्य निर्देशिका में एक विशेष फ़ोल्डर में संसाधित जावा स्रोत है। इसके बाद, आपको फ़िल्टर किए गए स्रोत को संकलित करने के लिए कंपाइलर प्लगइन को पुन: कॉन्फ़िगर करना होगा, और इसके बजाय, नए स्रोत को संकलित करें। ध्यान दें, जैसा कि सभी चीजों के साथ, आप इससे भी अधिक विन्यस्त कर सकते हैं।

यह blog entry उपयोगी है।

+0

आपके उत्तर के लिए धन्यवाद, लेकिन मैं इसे काम नहीं कर सकता, भले ही मैं 'targetPath' Maven विशेषता निर्दिष्ट करता हूं। असल में, मैंने * .java स्रोत फ़ाइलों का उपयोग करने की कोशिश नहीं की, क्या आपके पास कोई कामकाजी उदाहरण है? – sp00m

+0

यह काम करता है;) मैं अपनी कॉन्फ़िगरेशन जोड़ दूंगा। – chad

+0

बहुत बढ़िया, धन्यवाद! – sp00m