Uploaded image for project: 'Clover'
  1. Clover
  2. CLOV-1237

as a developer I'd like not to deploy clover.jar to app server

    XMLWordPrintable

Details

    • Our product teams collect and evaluate feedback from a number of different sources. To learn more about how we use customer feedback in the planning process, check out our new feature policy.

    Description

      Embed clover-runtime.jar into created JAR/WAR/EAR

      Problem:

      Instrumenting code by Clover is not enough, user has to manually add clover.jar to the runtime classpath. Otherwise it gets "ClassNotFoundException com_cenqua_clover/CoverageRecorder" error. There are over 6'000 views on answers.atlassian.com about this problem (it's #1 on the list)

      Solution:

      Create a possiblity to automatically or manually embed clover-runtime.jar into produced JAR/WAR/EAR artifacts.

      Tasks:

      1) Restructure Clover modules and find exact set of runtime classes, create clover-runtime.jar artifact out of it (will be published on Maven Central). Such subset was already found for Clover-for-Android, but it does not have classes for Distributed Coverage feature. See linked issue.

      2) Create Ant task like <clover-embed-runtime-jar targetJar="my.jar"/> which will allow to manually put runtime classes into it.

      3) Check if it would be possible to intercept all <jar/> calls as well and do it automatically. Add option to disable this automatic integration and/or to specify regular expression pattern which jars shall be enhanced.

      4) Create Maven goal like clover2:embed-runtime-jar with <targetJar> property.

      5) Check how to automatically embed Clover runtime classes. Possibilities:

      • extract clover-runtime.jar into target/classes or target/classes-clover
      • scan build reactor, intercept packaging tasks like maven-ear-plugin, maven-jar-plugin, maven-rar-plugin, maven-war-plugin, maven-assembly-plugin
      • modify maven project at runtime and add clover:clover-runtime dependency

      6) Eclipse integration - we already have -Xbootclasspath for "Run with Clover as..." but it's not enough if user has web application for example. Extract clover-runtime.jar into project's build folder so that other packaging tools could automatically pick these classes. Add pre-build or post-clean event handler to make sure that these classes will be still present after rebuild. Add some option in Window > Preferences or Project > Properties for this.

      7) IDEA integration - put these classes into out/production and out/test. Add option in File > Settings > Project Settings or File > Settings > IDE Settings for this.

      8) Grails integration - t.b.d.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              mparfianowicz Marek Parfianowicz
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: