1 package org.apache.maven.plugins.help;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.io.IOException;
23 import java.util.List;
24 import java.util.Map;
25
26 import org.apache.maven.plugin.MojoExecutionException;
27 import org.apache.maven.plugins.annotations.Mojo;
28 import org.apache.maven.plugins.annotations.Parameter;
29 import org.apache.maven.project.MavenProject;
30
31
32
33
34
35
36 @Mojo( name = "active-profiles", aggregator = true )
37 public class ActiveProfilesMojo
38 extends AbstractHelpMojo
39 {
40
41
42
43
44
45
46
47 @Parameter( defaultValue = "${reactorProjects}", required = true, readonly = true )
48 private List<MavenProject> projects;
49
50
51
52
53
54
55 public void execute()
56 throws MojoExecutionException
57 {
58 StringBuilder message = new StringBuilder();
59
60 for ( MavenProject project : projects )
61 {
62 getActiveProfileStatement( project, message );
63
64 message.append( LS ).append( LS );
65 }
66
67 if ( output != null )
68 {
69 StringBuilder sb = new StringBuilder();
70 sb.append( "Generated by Maven Help Plugin" ).append( LS );
71 sb.append( "See: https://maven.apache.org/plugins/maven-help-plugin/" ).append( LS ).append( LS );
72 sb.append( message.toString() );
73
74 try
75 {
76 writeFile( output, sb );
77 }
78 catch ( IOException e )
79 {
80 throw new MojoExecutionException( "Cannot write active profiles to output: " + output, e );
81 }
82
83 getLog().info( "Active profile report written to: " + output );
84 }
85 else
86 {
87 getLog().info( message );
88 }
89 }
90
91
92
93
94
95
96
97
98
99
100
101 private void getActiveProfileStatement( MavenProject project, StringBuilder message )
102 {
103 Map<String, List<String>> activeProfileIds = project.getInjectedProfileIds();
104
105 message.append( LS );
106 message.append( "Active Profiles for Project '" ).append( project.getId() ).append( "':" );
107 message.append( LS ).append( LS );
108
109 if ( activeProfileIds.isEmpty() )
110 {
111 message.append( "There are no active profiles." );
112 }
113 else
114 {
115 message.append( "The following profiles are active:" ).append( LS );
116
117 for ( Map.Entry<String, List<String>> entry : activeProfileIds.entrySet() )
118 {
119 for ( String profileId : entry.getValue() )
120 {
121 message.append( LS ).append( " - " ).append( profileId );
122 message.append( " (source: " ).append( entry.getKey() ).append( ")" );
123 }
124 }
125 }
126
127 message.append( LS );
128 }
129
130 }