2016-02-18 14 views
8

क्या इंटेलिज में पारंपरिक जावा ऐप (एंड्रॉइड प्रोजेक्ट नहीं) के लिए अलग-अलग स्रोत सेटों के आधार पर संस्करणों का निर्माण करना संभव है?इंटेलिज जावा एप्लिकेशन में वेरिएंट (उत्पाद स्वाद) बनाएं

मैं एंड्रॉइड ग्रेडल प्लगइन के साथ आता है, लेकिन पारंपरिक जावा एप्लिकेशन के लिए उत्पादफ्लोर्स जैसी सुविधा का उपयोग करना चाहता हूं।

उदाहरण:

library_red -- HelloImpl.java 
library_blue -- HelloImpl.java 
library_common -- Hello.java 

compiled library_blue -- Hello.class, HelloImpl.class 
compiled library_red -- Hello.class, HelloImpl.class 

उत्तर

0

जवाब है हां लेकिन आप नए Gradle सॉफ्टवेयर मॉडल है जो बहुत ज्यादा विकासशील है का उपयोग करना होगा। यह दर्द से भरा एक सड़क होगा क्योंकि आप एक निशान ब्लेज़र होंगे क्योंकि मैंने इसे सी/सीपीपी परियोजना के लिए उपयोग करना सीखा है। यहां आम तौर पर आपका निर्माण कैसा दिखता है।

plugins { 
    id 'jvm-component' 
    id 'java-lang' 
} 

model { 
    buildTypes { 
    debug 
    release 
    } 
    flavors { 
    free 
    paid 
    } 
    components { 
     server(JvmLibrarySpec) { 
      sources { 
       java { 
        if (flavor == flavors.paid) { 
        // do something to your sources 
        } 
        if (builtType == buildTypes.debug) { 
        // do something for debuging 
        } 
        dependencies { 
         library 'core' 
        } 
       } 
      } 
     } 

     core(JvmLibrarySpec) { 
      dependencies { 
       library 'commons' 
      } 
     } 

     commons(JvmLibrarySpec) { 
      api { 
       dependencies { 
        library 'collections' 
       } 
      } 
     } 

     collections(JvmLibrarySpec) 
    } 
} 

संदर्भ: https://docs.gradle.org/current/userguide/java_software.html

0

हम अपने संस्करण प्रणाली के लिए Gradle बहु मॉड्यूल परियोजनाओं का उपयोग करें। एक मूल परियोजना है जिसमें सामान्य कोड होता है। अनुकूलन बस उपप्रोजेक्ट में किया जाता है।

subprojects { 
    dependencies { 
    compile project(':core') 
    } 
} 

संस्करण उपप्रोजेक्ट कोर पर निर्भर करते हैं और प्रत्येक व्यक्ति व्यक्तिगत .war फाइलें बनाते हैं। ध्यान दें कि इस मामले में हम कोर प्रोजेक्ट से कक्षाओं को ओवरराइड नहीं करते हैं। कोड अनुकूलन के लिए हम वसंत का उपयोग करते हैं और कुछ मामलों में एसपीआई, लेकिन मुझे लगता है कि किसी भी निर्भरता इंजेक्शन ढांचे को पूरा कर सकते हैं। यह आपको कोर में स्पष्ट विस्तार बिंदु प्रदान करने के लिए मजबूर करता है जो मुझे लगता है कि एक अच्छी बात है।

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