|
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