Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
AnalyzeReportMojo |
|
| 1.75;1.75 |
1 | package org.apache.maven.plugin.dependency; | |
2 | ||
3 | /* | |
4 | * Licensed to the Apache Software Foundation (ASF) under one | |
5 | * or more contributor license agreements. See the NOTICE file | |
6 | * distributed with this work for additional information | |
7 | * regarding copyright ownership. The ASF licenses this file | |
8 | * to you under the Apache License, Version 2.0 (the | |
9 | * "License"); you may not use this file except in compliance | |
10 | * with the License. You may obtain a copy of the License at | |
11 | * | |
12 | * http://www.apache.org/licenses/LICENSE-2.0 | |
13 | * | |
14 | * Unless required by applicable law or agreed to in writing, | |
15 | * software distributed under the License is distributed on an | |
16 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
17 | * KIND, either express or implied. See the License for the | |
18 | * specific language governing permissions and limitations | |
19 | * under the License. | |
20 | */ | |
21 | ||
22 | import java.io.File; | |
23 | import java.util.Locale; | |
24 | import java.util.ResourceBundle; | |
25 | ||
26 | import org.apache.maven.doxia.sink.Sink; | |
27 | import org.apache.maven.doxia.siterenderer.Renderer; | |
28 | import org.apache.maven.project.MavenProject; | |
29 | import org.apache.maven.reporting.AbstractMavenReport; | |
30 | import org.apache.maven.reporting.MavenReportException; | |
31 | import org.apache.maven.shared.dependency.analyzer.ProjectDependencyAnalysis; | |
32 | import org.apache.maven.shared.dependency.analyzer.ProjectDependencyAnalyzer; | |
33 | import org.apache.maven.shared.dependency.analyzer.ProjectDependencyAnalyzerException; | |
34 | ||
35 | /** | |
36 | * Analyzes the dependencies of this project and produces a report that summarises which are: used and declared; used | |
37 | * and undeclared; unused and declared. | |
38 | * | |
39 | * @version $Id: AnalyzeReportMojo.java 728546 2008-12-21 22:56:51Z bentmann $ | |
40 | * @since 2.0-alpha-5 | |
41 | * | |
42 | * @goal analyze-report | |
43 | * @requiresDependencyResolution test | |
44 | * @execute phase="test-compile" | |
45 | */ | |
46 | 0 | public class AnalyzeReportMojo |
47 | extends AbstractMavenReport | |
48 | { | |
49 | // fields ----------------------------------------------------------------- | |
50 | ||
51 | /** | |
52 | * The Maven project to analyze. | |
53 | * | |
54 | * @parameter expression="${project}" | |
55 | * @required | |
56 | * @readonly | |
57 | */ | |
58 | private MavenProject project; | |
59 | ||
60 | /** | |
61 | * The Maven project dependency analyzer to use. | |
62 | * | |
63 | * @component | |
64 | * @required | |
65 | * @readonly | |
66 | */ | |
67 | private ProjectDependencyAnalyzer analyzer; | |
68 | ||
69 | /** | |
70 | * | |
71 | * | |
72 | * @component | |
73 | * @required | |
74 | * @readonly | |
75 | */ | |
76 | private Renderer siteRenderer; | |
77 | ||
78 | /** | |
79 | * Target folder | |
80 | * | |
81 | * @parameter expression="${project.build.directory}" | |
82 | * @readonly | |
83 | * @since 2.0-alpha-5 | |
84 | */ | |
85 | private File outputDirectory; | |
86 | ||
87 | // Mojo methods ----------------------------------------------------------- | |
88 | ||
89 | /* | |
90 | * @see org.apache.maven.plugin.Mojo#execute() | |
91 | */ | |
92 | public void executeReport( Locale locale ) throws MavenReportException | |
93 | { | |
94 | // Step 0: Checking pom availability | |
95 | 0 | if ( "pom".equals( project.getPackaging() ) ) |
96 | { | |
97 | 0 | getLog().info( "Skipping pom project" ); |
98 | 0 | return; |
99 | } | |
100 | ||
101 | 0 | if ( outputDirectory == null || !outputDirectory.exists() ) |
102 | { | |
103 | 0 | getLog().info( "Skipping project with no Target directory" ); |
104 | 0 | return; |
105 | } | |
106 | ||
107 | // Step 1: Analyse the project | |
108 | 0 | ProjectDependencyAnalysis analysis = null; |
109 | try | |
110 | { | |
111 | 0 | analysis = analyzer.analyze( project ); |
112 | } | |
113 | 0 | catch ( ProjectDependencyAnalyzerException exception ) |
114 | { | |
115 | 0 | throw new MavenReportException( "Cannot analyze dependencies", exception ); |
116 | 0 | } |
117 | ||
118 | // Step 2: Create sink and bundle | |
119 | 0 | Sink sink = getSink(); |
120 | 0 | ResourceBundle bundle = getBundle( locale ); |
121 | ||
122 | // Step 3: Generate the report | |
123 | 0 | AnalyzeReportView analyzethis = new AnalyzeReportView(); |
124 | 0 | analyzethis.generateReport( analysis, sink, bundle ); |
125 | 0 | } |
126 | ||
127 | // MavenReport methods ---------------------------------------------------- | |
128 | ||
129 | /* | |
130 | * @see org.apache.maven.reporting.AbstractMavenReport#getOutputName() | |
131 | */ | |
132 | public String getOutputName() | |
133 | { | |
134 | 0 | return "dependency-analysis"; |
135 | } | |
136 | ||
137 | /* | |
138 | * @see org.apache.maven.reporting.AbstractMavenReport#getName(java.util.Locale) | |
139 | */ | |
140 | public String getName( Locale locale ) | |
141 | { | |
142 | 0 | return getBundle( locale ).getString( "analyze.report.name" ); |
143 | } | |
144 | ||
145 | /* | |
146 | * @see org.apache.maven.reporting.AbstractMavenReport#getDescription(java.util.Locale) | |
147 | */ | |
148 | public String getDescription( Locale locale ) | |
149 | { | |
150 | 0 | return getBundle( locale ).getString( "analyze.report.description" ); |
151 | } | |
152 | ||
153 | // AbstractMavenReport methods -------------------------------------------- | |
154 | ||
155 | /* | |
156 | * @see org.apache.maven.reporting.AbstractMavenReport#getProject() | |
157 | */ | |
158 | protected MavenProject getProject() | |
159 | { | |
160 | 0 | return project; |
161 | } | |
162 | ||
163 | /* | |
164 | * @see org.apache.maven.reporting.AbstractMavenReport#getOutputDirectory() | |
165 | */ | |
166 | protected String getOutputDirectory() | |
167 | { | |
168 | 0 | getLog().info( outputDirectory.toString() ); |
169 | ||
170 | 0 | return outputDirectory.toString(); |
171 | } | |
172 | ||
173 | /* | |
174 | * @see org.apache.maven.reporting.AbstractMavenReport#getSiteRenderer() | |
175 | */ | |
176 | protected Renderer getSiteRenderer() | |
177 | { | |
178 | 0 | return siteRenderer; |
179 | } | |
180 | ||
181 | // protected methods ------------------------------------------------------ | |
182 | ||
183 | /** | |
184 | * | |
185 | * | |
186 | * @param locale | |
187 | * the current locale | |
188 | */ | |
189 | protected ResourceBundle getBundle( Locale locale ) | |
190 | { | |
191 | 0 | return ResourceBundle.getBundle( "analyze-report", locale, this.getClass().getClassLoader() ); |
192 | } | |
193 | } |