यह आसान होना चाहिए।AspectJ: अन्य परियोजनाओं में स्थित कक्षाओं की सलाह देने के लिए पॉइंटकूट कैसे प्राप्त करें
प्रश्न
आप एक परियोजना में एक pointcut एक अन्य परियोजना के भीतर कोड/वर्गों सलाह देने के लिए कैसे मिलता है?
संदर्भ
मैं दो परियोजनाओं के साथ ग्रहण में काम कर रहा हूं। स्पष्टीकरण में आसानी के लिए, हम एक विज्ञान परियोजना और अन्य गणित परियोजना फोन और कहते हैं कि विज्ञान परियोजना गणित परियोजना पर निर्भर करता है और मैं दोनों परियोजनाओं में विकासशील हूँ, समवर्ती करते हैं। गणित परियोजना उत्पादन में एक मुख्य उत्पाद है, और अगर मैं कोड को अधिक संशोधित नहीं करता तो जीवन आसान होगा।
वर्तमान में, मैं इन दो परियोजनाओं के बीच बातचीत को डीबग कर रहा हूं। इसके साथ सहायता करने के लिए, मैं गणित कोड (और विज्ञान कोड) निष्पादित होने के रूप में महत्वपूर्ण जानकारी लॉग इन करने के लिए एक पहलू (विज्ञान परियोजना के भीतर) लिख रहा हूं।
उदाहरण
मैं की तर्ज पर एक सरल उदाहरण पहलू चल:
package org.science.example;
public aspect ScientificLog {
public pointcut testCut() : execution (public * *.*(..));
before() : testCut() {
//do stuff
}
}
समस्या
समस्या है, कोई बात नहीं क्या pointcut मैं बनाने के लिए, यह केवल सलाह देता है विज्ञान परियोजना से कोड।
org.math.example
से कोई कक्षा नहीं है, सभी पर!
मैं
proect properties > AspectJ Build > Inpath
के लिए जा रहा है और
ऐड परियोजना क्लिक करके और
गणित परियोजना का चयन करके
विज्ञान परियोजना की inpath को
गणित परियोजना जोड़ने की कोशिश की। यह काम नहीं किया लेकिन ऐसा लगता है कि मुझे उन पंक्तियों के साथ कुछ करने की ज़रूरत है।
धन्यवाद, अग्रिम में, किसी भी सुझाव ...
-gMale
संपादित करें 1:
इस लेखन, मैंने देखा है के बाद से परियोजना निम्न त्रुटि दे रहा है:
Caused by: org.aspectj.weaver.BCException: Unable to continue, this version of AspectJ supports classes built with weaver version 6.0 but the class com.our.project.adapter.GenericMessagingAdapter is version 7.0 when batch building BuildConfig[null] #Files=52 AopXmls=#0
तो हो सकता है कि यह ठीक से सेटअप हो और त्रुटि अधिक सूक्ष्म हो। बीटीडब्लू, कक्षा का उल्लेख "विज्ञान परियोजना" से है, इसलिए बोलने के लिए। यह परियोजना को साफ करने के बाद भी होता है। मैं वर्तमान में इस त्रुटि googling हूँ ...
संपादित करें 2:
मैं ऊपर में comment #5 here
त्रुटि का हल पाया समस्या Maven-AspectJ-प्लगइन का पोम फ़ाइल aspectjtools संस्करण 1.6 पर निर्भरता की घोषणा की है .7। इसलिए, प्लगइन को कॉन्फ़िगर करते समय, उस क्षणिक निर्भरता को संशोधित किया जाना चाहिए। यहां पोम फ़ाइल के लिए संबंधित कोड स्निपेट है जो 1.6 के बजाय संस्करण 1.6.9 निर्दिष्ट करके समस्या को हल करता है।7:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.3</version>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>1.6.9</version>
</dependency>
</dependencies>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
</plugin>
धन्यवाद, आप बिल्कुल सही हैं। मैंने अपवाद को हल किया और तदनुसार मेरे प्रश्न को ऊपर अपडेट किया। दुर्भाग्यवश, समय के लिए, मुझे अनिवार्य रूप से "गणित परियोजना" को "विज्ञान परियोजना" में खींचने का निर्देश दिया गया है। जाहिर है, यह समस्या से बचाता है लेकिन मैं दूसरी बग को ठीक करने के प्रभाव को निर्धारित करने में असमर्थ हूं क्योंकि कोड बेस अब पूरी तरह से अलग है और उपversण में बैकट्रैकिंग में बहुत अधिक समय लगेगा। आपकी सहायता के लिए धन्यवाद. चूंकि आप एकमात्र प्रतिक्रिया हैं, इसलिए मैं आपके सभी संदेशों को वोट दूंगा और आपको जवाब दूंगा। धन्यवाद! – gMale