Uploaded image for project: 'Bamboo Data Center'
  1. Bamboo Data Center
  2. BAM-13222

Use an absolute path for Clover history dir for automatic Clover integration

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Low Low
    • 5.0
    • 5.0 M5
    • None
    • None

      See problem described here:
      https://confluence.atlassian.com/display/CLOVERKB/Multi-module+Maven+build+on+Bamboo+with+Clover+history+reports

      Bamboo uses default '-Dmaven.clover.historyDir=.cloverhistory' location, which is relative and build fails for sub-modules. Users are not able to override this setting (if they define the property in 'Goals' field in 'Maven Task' configuration, the mvn command is executed with two options - one from user and one from Bamboo).

      Instead of this Bamboo shall explicitly use the absolute path pointing to a workspace root, e.g.:

      -Dmaven.clover.historyDir=${bamboo.build.working.directory}/.cloverhistory
      

      Affects all Bamboo versions.

            [BAM-13222] Use an absolute path for Clover history dir for automatic Clover integration

             	java.lang.IllegalStateException: basedir C:\Users\Jacek\bamboo-home-4.4.5\xml-data\build-dir\PR-CLOVMMT-JOB1\tutorial1\.cloverhistory is not a directory
            	        at org.apache.tools.ant.DirectoryScanner.scan(DirectoryScanner.java:819)
            	        at com.cenqua.clover.tasks.CloverReportTask$HistoricalEx.processHistoryIncludes(CloverReportTask.java:274)
            	        at com.cenqua.clover.tasks.CloverReportTask$HistoricalEx.processHistoryIncludes(CloverReportTask.java:261)
            	        at com.cenqua.clover.tasks.CloverReportTask$HistoricalEx.resolve(CloverReportTask.java:241)
            	        at com.cenqua.clover.tasks.CloverReportTask.cloverExecute(CloverReportTask.java:340)
            	        at com.cenqua.clover.tasks.AbstractCloverTask.execute(AbstractCloverTask.java:55)
            	        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
            	        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            	        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
            	        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            	        at java.lang.reflect.Method.invoke(Method.java:601)
            	        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
            	        at org.apache.tools.ant.Task.perform(Task.java:348)
            	        at org.apache.tools.ant.Target.execute(Target.java:357)
            	        at org.apache.tools.ant.Target.performTasks(Target.java:385)
            	        at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1337)
            	        at org.apache.tools.ant.Project.executeTarget(Project.java:1306)
            	        at com.atlassian.maven.plugin.clover.CloverReportMojo.createReport(CloverReportMojo.java:425)
            	        at com.atlassian.maven.plugin.clover.CloverReportMojo.createAllReportTypes(CloverReportMojo.java:373)
            	        at com.atlassian.maven.plugin.clover.CloverReportMojo.executeReport(CloverReportMojo.java:357)
            	        at org.apache.maven.reporting.AbstractMavenReport.generate(AbstractMavenReport.java:101)
            	        at org.apache.maven.reporting.AbstractMavenReport.execute(AbstractMavenReport.java:66)
            	        at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
            	        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
            	        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:569)
            	        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:539)
            	        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
            	        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348)
            	        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
            	        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
            	        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
            	        at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
            	        at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
            	        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            	        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
            	        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            	        at java.lang.reflect.Method.invoke(Method.java:601)
            	        at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
            	        at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
            	        at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
            	        at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
            

            Jacek Jaroczynski (Inactive) added a comment - java.lang.IllegalStateException: basedir C:\Users\Jacek\bamboo-home-4.4.5\xml-data\build-dir\PR-CLOVMMT-JOB1\tutorial1\.cloverhistory is not a directory at org.apache.tools.ant.DirectoryScanner.scan(DirectoryScanner.java:819) at com.cenqua.clover.tasks.CloverReportTask$HistoricalEx.processHistoryIncludes(CloverReportTask.java:274) at com.cenqua.clover.tasks.CloverReportTask$HistoricalEx.processHistoryIncludes(CloverReportTask.java:261) at com.cenqua.clover.tasks.CloverReportTask$HistoricalEx.resolve(CloverReportTask.java:241) at com.cenqua.clover.tasks.CloverReportTask.cloverExecute(CloverReportTask.java:340) at com.cenqua.clover.tasks.AbstractCloverTask.execute(AbstractCloverTask.java:55) at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) at org.apache.tools.ant.Task.perform(Task.java:348) at org.apache.tools.ant.Target.execute(Target.java:357) at org.apache.tools.ant.Target.performTasks(Target.java:385) at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1337) at org.apache.tools.ant.Project.executeTarget(Project.java:1306) at com.atlassian.maven.plugin.clover.CloverReportMojo.createReport(CloverReportMojo.java:425) at com.atlassian.maven.plugin.clover.CloverReportMojo.createAllReportTypes(CloverReportMojo.java:373) at com.atlassian.maven.plugin.clover.CloverReportMojo.executeReport(CloverReportMojo.java:357) at org.apache.maven.reporting.AbstractMavenReport.generate(AbstractMavenReport.java:101) at org.apache.maven.reporting.AbstractMavenReport.execute(AbstractMavenReport.java:66) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:569) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:539) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138) at org.apache.maven.cli.MavenCli.main(MavenCli.java:362) at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) at org.codehaus.classworlds.Launcher.main(Launcher.java:375)

            Workaround which is currently possible: using manual Clover integration.

            Marek Parfianowicz added a comment - Workaround which is currently possible: using manual Clover integration.

            Code snippet:

            import com.atlassian.clover.api.ci.CIOptions;
            
            return new CIOptions.Builder()
                .historical(true)
                .historyDir(new File("value of bamboo.build.working.directory");
            

            Marek Parfianowicz added a comment - Code snippet: import com.atlassian.clover.api.ci.CIOptions; return new CIOptions.Builder() .historical( true ) .historyDir( new File( "value of bamboo.build.working.directory" );

              mparfianowicz Marek Parfianowicz
              mparfianowicz Marek Parfianowicz
              Affected customers:
              0 This affects my team
              Watchers:
              3 Start watching this issue

                Created:
                Updated:
                Resolved: