Skip to content

Commit af10462

Browse files
committed
Add 'additionalForkedProjectProperties' configuration parameter
1 parent 3db3553 commit af10462

File tree

2 files changed

+52
-2
lines changed

2 files changed

+52
-2
lines changed

src/main/java/org/scoverage/plugin/SCoverageForkedLifecycleConfigurator.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
import java.io.File;
2121
import java.util.List;
22+
import java.util.Map;
2223

2324
import org.apache.maven.project.MavenProject;
2425

@@ -62,8 +63,10 @@ public class SCoverageForkedLifecycleConfigurator
6263
*
6364
* @param project Maven project in {@code scoverage} forked life cycle.
6465
* @param reactorProjects all reactor Maven projects.
66+
* @param additionalProjectPropertiesMap additional project properties to set.
6567
*/
66-
public static void afterForkedLifecycleEnter( MavenProject project, List<MavenProject> reactorProjects )
68+
public static void afterForkedLifecycleEnter( MavenProject project, List<MavenProject> reactorProjects,
69+
Map<String, String> additionalProjectPropertiesMap )
6770
{
6871
File classesDirectory = new File( project.getBuild().getOutputDirectory() );
6972
File scoverageClassesDirectory =
@@ -72,6 +75,14 @@ public static void afterForkedLifecycleEnter( MavenProject project, List<MavenPr
7275
project.getArtifact().setFile( null );
7376
project.getBuild().setOutputDirectory( scoverageClassesDirectory.getAbsolutePath() );
7477

78+
if ( additionalProjectPropertiesMap != null )
79+
{
80+
for ( Map.Entry<String, String> entry: additionalProjectPropertiesMap.entrySet() )
81+
{
82+
project.getProperties().put( entry.getKey(), entry.getValue() );
83+
}
84+
}
85+
7586
for ( MavenProject reactorProject : reactorProjects )
7687
{
7788
if ( reactorProject != project )

src/main/java/org/scoverage/plugin/SCoveragePreCompileMojo.java

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,10 @@
2222
import java.io.FileOutputStream;
2323
import java.io.IOException;
2424
import java.io.OutputStreamWriter;
25+
import java.util.HashMap;
2526
import java.util.LinkedHashSet;
2627
import java.util.List;
28+
import java.util.Map;
2729
import java.util.Properties;
2830
import java.util.Set;
2931

@@ -141,6 +143,20 @@ public class SCoveragePreCompileMojo
141143
@Parameter( property = "scoverage.scalacPluginVersion", defaultValue = "" )
142144
private String scalacPluginVersion;
143145

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+
144160
/**
145161
* Maven project to interact with.
146162
*/
@@ -245,7 +261,30 @@ else if ( "2.12".equals( resolvedScalaVersion ) || resolvedScalaVersion.startsWi
245261
return;
246262
}
247263

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 );
249288

250289
try
251290
{

0 commit comments

Comments
 (0)