-
Suggestion
-
Resolution: Fixed
-
None
Currently, it's planned to deliver the feature in two steps:
- Bamboo 5.8 - changes in Bamboo Clover Plugin UI
- Bamboo 5.9 - enabling this feature by upgrading dependency to Clover 4.0.3+
Problem:
A build can fail during test execution in case when Automatic Clover integration is used and the project is a Maven project with multiple modules having dependencies between each other.
Scenario:
MasterModule /ModuleA /ModuleB
Maven goal is called: clean test. Compilation order will be:
MasterModule clean MasterModule test ModuleB clean ModuleB test ModuleB jar <-- JAR is created ModuleA clean ModuleA test <-- using ModuleB.jar in classpath
What happens when Automatic Clover integration is enabled? Goals are enhanced as follows: clean test clean clover2:setup verify clover2:aggregate clover2:clover. What happens? A compilation is as follows:
ModuleB clean ModuleB test ModuleB clean ModuleB clover2:setup ModuleB verify ModuleB jar <-- JAR is created with instrumented classes! ModuleA clean ModuleA test <-- using ModuleB.jar in classpath with instrumented classes, but we're before clover2:setup so clover.jar artifact is not available, build fails //expected to have ModuleA clover2:setup verify ...
Issue affects all Bamboo versions.
Possible improvement:
1) Analyze which goals are defined in Maven task. Next add Clover goals in between:
- add "clover2:setup" after the "clean" (if present) and before other goals
- but "jaxb2:generate clover2:setup"
- but "wsdl2java clover2:setup"
- what to do in case when "install" or "deploy" phase is declared? deploying instrumented JARs shall be avoided in general
- write help for "automatically integrate clover" radio button?
- write warning in UI if such goals are found?
- write warning in a build log if such goals are found?
- add "clover2:aggregate clover2:clover" after all goals
2) Alternatively, call Clover first and clean everything after Clover finishes, e.g. something like:
mvn clean clover2:setup verify clover2:clover clean <original goals>
but this causes a problem that all Clover reports will be wiped out after last clean. They'd have to be stored somewhere.
3) Alternatively, we could add an extra Maven task at the end of the Job with would run "clean" + Clover goals. But this would change build configuration.
Form Name |
---|
[BAM-13208] Improve Automatic Clover integration for multi-module maven builds
Remote Link | Original: This issue links to "Page (Atlassian Documentation)" [ 84497 ] |
Workflow | Original: JAC Suggestion Workflow [ 3018892 ] | New: JAC Suggestion Workflow 3 [ 3603502 ] |
Status | Original: RESOLVED [ 5 ] | New: Closed [ 6 ] |
Workflow | Original: Confluence Workflow - Public Facing v4 [ 2699322 ] | New: JAC Suggestion Workflow [ 3018892 ] |
Issue Type | Original: Improvement [ 4 ] | New: Suggestion [ 10000 ] |
Workflow | Original: Bamboo Workflow 2016 v1 [ 1420726 ] | New: Confluence Workflow - Public Facing v4 [ 2699322 ] |
Workflow | Original: Bamboo Workflow 2014 v2 [ 606636 ] | New: Bamboo Workflow 2016 v1 [ 1420726 ] |
Remote Link | Original: This issue links to "Page (Atlassian Documentation)" [ 84497 ] | New: This issue links to "Page (Atlassian Documentation)" [ 84497 ] |
Sprint | New: Sprint 3 - charts [ 1264 ] |
Sprint | Original: Sprint 2 - integrations [ 1263 ] |
Rank | New: Ranked higher |