यदि मेरे पास एक जावा प्रोजेक्ट है जो लाइब्रेरी (एक जार फ़ाइल) का उपयोग करता है, तो क्या इस जार के अंदर कक्षाओं के कोड कवरेज को प्राप्त करना संभव है?मैं जैकोको के साथ बाहरी जावा पुस्तकालय का कोड कवरेज कैसे प्राप्त कर सकता हूं?
इस के पीछे विचार यह है कि मैं यह जानना चाहता हूं कि परियोजना के बाहरी पुस्तकालयों का अनुपात किस प्रकार निर्भर करता है (चलो वसंत, हाइबरनेट, या स्कैला जार हो सकता है यदि यह एक स्कैला प्रोजेक्ट था, क्यों नहीं) वास्तव में उपयोग किया जाता है। मैं यह भी कल्पना करता हूं कि मैं उन्हें सूचीबद्ध करने की कोशिश कर सकता हूं और उन्हें एक ही जार में दोबारा जोड़ सकता हूं जिसमें केवल आवश्यक होगा। क्लास फाइलें (उदाहरण के लिए अपाचे फ़ेलिक्स जैसी प्लगइन के साथ), सबसे छोटा संभव जार प्राप्त करने के लिए। मुझे यकीन नहीं है कि मैं वास्तव में ऐसा करना चाहता हूं, मुझे पता है कि यह कई कारणों से शायद एक बुरा विचार है, लेकिन मैं इसे एक प्रयोग के रूप में सोचता हूं।
मुझे यह नहीं पता कि यह कैसे करना है, जैकोको केवल मेरी परियोजना के अंदर कक्षा फ़ाइलों के लिए कवरेज की रिपोर्ट करता है। शायद मैं कुछ गलत कर रहा हूँ, मैं इस तरह Maven प्लगइन का उपयोग कर रहा:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.5.6.2012</version>
<configuration>
<destfile>${basedir}/target/coverage-reports/jacoco-unit.exec</destfile>
<datafile>${basedir}/target/coverage-reports/jacoco-unit.exec</datafile>
<includes>
<include>**</include>
</includes>
</configuration>
<executions>
<execution>
<id>jacoco-initialize</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>jacoco-site</id>
<phase>package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
मैं बदल रहा टैग शामिल की कोशिश की है, लेकिन केवल प्रभाव डिफ़ॉल्ट है जो सिर्फ क्लास फ़ाइलों को सीधे अंदर शामिल सीमित है मेरी परियोजना।
अग्रिम धन्यवाद!
oers 'जवाब के बाद संपादित करें:
मुझे पता चला कैसे चींटी और antrun-प्लगइन के साथ यह करने के लिए है, हालांकि यह बहुत जटिल है, मैं antrun प्लगइन संस्करण (एक करने में असमर्थ के साथ ज्यादा मुसीबत था हालिया संस्करण का काम, यहां तक कि एक बुनियादी कार्य के लिए) और मैं वास्तव में मेवेन से चिपकना चाहता हूं। यदि कोई जानता है कि चींटी के बजाय जे जैकोको मेवेन प्लगइन के बराबर कैसे करना है, तो मुझे रूचि है!
चींटी के साथ आंशिक समाधान: वास्तव में jacoco.exec फ़ाइल में पहले से ही मेरे बाहरी जारों के वर्गों के संदर्भ शामिल हैं; इसलिए यह रिपोर्ट कार्य है जिसे इन जार का विवरण लेने के लिए कहा जाना चाहिए, न कि रनटाइम चरण जैसा कि मैंने सोचा था। यहाँ Maven विन्यास मैं इस्तेमाल किया (मैं http://intellectualcramps.wordpress.com/2012/03/22/jacoco-tycho-and-coverage-reports/ पर मदद पाया जाता है) है:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<!--<version>1.7</version>-->
<dependencies>
<dependency>
<groupId>org.jacoco</groupId>
<artifactId>org.jacoco.ant</artifactId>
<version>0.5.6.2012</version>
</dependency>
<dependency>
<groupId>ant-contrib</groupId>
<artifactId>ant-contrib</artifactId>
<version>20020829</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>jacoco-report</id>
<phase>package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<taskdef name="jacoco-report"
classname="org.jacoco.ant.ReportTask"
classpathref="maven.plugin.classpath" />
<taskdef classpathref="maven.runtime.classpath"
resource="net/sf/antcontrib/antcontrib.properties" />
<available
file="${project.basedir}/target/jacoco.exec"
property="jacoco.exec.file.exists" />
<echo message="${project.basedir}/target/jacoco.exec" />
<if>
<equals arg1="${jacoco.exec.file.exists}"
arg2="true" />
<then>
<echo message="Executing jacoco report" />
<trycatch>
<try>
<jacoco-report>
<executiondata>
<file
file="${project.basedir}/target/jacoco.exec" />
</executiondata>
<structure name="Minerva">
<classfiles>
<fileset
dir="target/classes" />
<fileset dir="C:/Data/dev/m2Repository/com/groupama/framework/crypt/fwk-cryptage/1.0/">
<include name="**/*.jar"/>
</fileset>
</classfiles>
<sourcefiles
encoding="UTF-8">
<fileset
dir="src/main/java" />
</sourcefiles>
</structure>
<html destdir="${project.basedir}/target/jacoco/report" />
<xml destfile="${project.basedir}/target/jacoco/report/jacoco.xml"/>
</jacoco-report>
</try>
<catch>
<echo>skipping</echo>
</catch>
</trycatch>
</then>
<else>
<echo message="No jacoco.exec file found." />
</else>
</if>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
आप दस्तावेज़ीकरण के बारे में सही हैं, जो वास्तव में और अधिक पूर्ण होने की आवश्यकता है। मैंने वास्तव में सोचा कि यह रन कार्य था जिसे पैरामीटर किया जाना आवश्यक था; आपने मुझे jacoco.exec फ़ाइल में देखा है और महसूस किया है कि इसमें पहले से ही बाहरी जार के अंदर कक्षाओं के संदर्भ शामिल हैं, जिसका अर्थ है कि यह वह रिपोर्ट है जिसे सही ढंग से पैरामीटर किया जाना चाहिए। चींटी को नहीं जानते, मैंने इसे काम करने से पहले पूरी सुबह बिताया, लेकिन आखिर में काम किया।यह आंशिक रूप से मुझे संतुष्ट करता है, नीचे मेरा जवाब देखें, लेकिन यह सही दिशा में एक कदम है। वैसे भी बहुत बहुत धन्यवाद! – Guillaume
धन्यवाद ओरेस आपने अपना दिन बचाया – vinod