|
22 | 22 | import java.io.FileOutputStream; |
23 | 23 | import java.io.IOException; |
24 | 24 | import java.io.OutputStreamWriter; |
| 25 | +import java.util.HashMap; |
25 | 26 | import java.util.LinkedHashSet; |
26 | 27 | import java.util.List; |
| 28 | +import java.util.Map; |
27 | 29 | import java.util.Properties; |
28 | 30 | import java.util.Set; |
29 | 31 |
|
@@ -141,6 +143,20 @@ public class SCoveragePreCompileMojo |
141 | 143 | @Parameter( property = "scoverage.scalacPluginVersion", defaultValue = "" ) |
142 | 144 | private String scalacPluginVersion; |
143 | 145 |
|
| 146 | + /** |
| 147 | + * Semicolon-separated list of project properties set in forked {@code scoverage} life cycle. |
| 148 | + * <br> |
| 149 | + * <br> |
| 150 | + * Example: |
| 151 | + * <br> |
| 152 | + * {@code prop1=val1;prop2=val2;prop3=val3} |
| 153 | + * <br> |
| 154 | + * |
| 155 | + * @since 1.4.0 |
| 156 | + */ |
| 157 | + @Parameter( property = "scoverage.additionalForkedProjectProperties", defaultValue = "" ) |
| 158 | + private String additionalForkedProjectProperties; |
| 159 | + |
144 | 160 | /** |
145 | 161 | * Maven project to interact with. |
146 | 162 | */ |
@@ -245,7 +261,30 @@ else if ( "2.12".equals( resolvedScalaVersion ) || resolvedScalaVersion.startsWi |
245 | 261 | return; |
246 | 262 | } |
247 | 263 |
|
248 | | - SCoverageForkedLifecycleConfigurator.afterForkedLifecycleEnter( project, reactorProjects ); |
| 264 | + Map<String, String> additionalProjectPropertiesMap = null; |
| 265 | + if ( additionalForkedProjectProperties != null && !additionalForkedProjectProperties.isEmpty() ) |
| 266 | + { |
| 267 | + String[] props = additionalForkedProjectProperties.split( ";" ); |
| 268 | + additionalProjectPropertiesMap = new HashMap<String, String>( props.length ); |
| 269 | + for ( String propVal: props ) |
| 270 | + { |
| 271 | + String[] tmp = propVal.split( "=", 2 ); |
| 272 | + if ( tmp.length == 2 ) |
| 273 | + { |
| 274 | + String propName = tmp[ 0 ].trim(); |
| 275 | + String propValue = tmp[ 1 ].trim(); |
| 276 | + additionalProjectPropertiesMap.put( propName, propValue ); |
| 277 | + } |
| 278 | + else |
| 279 | + { |
| 280 | + getLog().warn( String.format( "Skipping invalid additional forked project property \"%s\", must be in \"key=value\" format", |
| 281 | + propVal ) ); |
| 282 | + |
| 283 | + } |
| 284 | + } |
| 285 | + } |
| 286 | + |
| 287 | + SCoverageForkedLifecycleConfigurator.afterForkedLifecycleEnter( project, reactorProjects, additionalProjectPropertiesMap ); |
249 | 288 |
|
250 | 289 | try |
251 | 290 | { |
|
0 commit comments