View Javadoc

1   package org.apache.maven.report.projectinfo;
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.util.List;
23  import java.util.Locale;
24  
25  import org.apache.maven.artifact.factory.ArtifactFactory;
26  import org.apache.maven.artifact.manager.WagonManager;
27  import org.apache.maven.artifact.repository.ArtifactRepository;
28  import org.apache.maven.artifact.repository.metadata.RepositoryMetadataManager;
29  import org.apache.maven.project.MavenProjectBuilder;
30  import org.apache.maven.report.projectinfo.dependencies.ManagementDependencies;
31  import org.apache.maven.report.projectinfo.dependencies.RepositoryUtils;
32  import org.apache.maven.report.projectinfo.dependencies.renderer.DependencyManagementRenderer;
33  
34  /**
35   * Generates the Project Dependency Management report.
36   *
37   * @author Nick Stolwijk
38   * @version $Id: DependencyManagementReport.java 1038048 2010-11-23 10:52:14Z vsiveton $
39   * @since 2.1
40   * @goal dependency-management
41   * @requiresDependencyResolution test
42   */
43  public class DependencyManagementReport
44      extends AbstractProjectInfoReport
45  {
46      // ----------------------------------------------------------------------
47      // Mojo components
48      // ----------------------------------------------------------------------
49  
50      /**
51       * Maven Project Builder component.
52       *
53       * @component
54       */
55      private MavenProjectBuilder mavenProjectBuilder;
56  
57      /**
58       * Maven Artifact Factory component.
59       *
60       * @component
61       */
62      private ArtifactFactory artifactFactory;
63  
64      /**
65       * Wagon manager component.
66       *
67       * @since 2.3
68       * @component
69       */
70      private WagonManager wagonManager;
71  
72      /**
73       * Repository metadata component.
74       *
75       * @since 2.3
76       * @component
77       */
78      private RepositoryMetadataManager repositoryMetadataManager;
79  
80      // ----------------------------------------------------------------------
81      // Mojo parameters
82      // ----------------------------------------------------------------------
83  
84      /**
85       * Remote repositories used for the project.
86       *
87       * @since 2.1
88       * @parameter expression="${project.remoteArtifactRepositories}"
89       */
90      private List<ArtifactRepository> remoteRepositories;
91  
92      /**
93       * Lazy instantiation for management dependencies.
94       */
95      private ManagementDependencies managementDependencies;
96  
97      // ----------------------------------------------------------------------
98      // Public methods
99      // ----------------------------------------------------------------------
100 
101     @Override
102     public void executeReport( Locale locale )
103     {
104         @SuppressWarnings( "unchecked" )
105         RepositoryUtils repoUtils =
106             new RepositoryUtils( getLog(), wagonManager, settings,
107                                  mavenProjectBuilder, factory, resolver, project.getRemoteArtifactRepositories(),
108                                  project.getPluginArtifactRepositories(), localRepository,
109                                  repositoryMetadataManager );
110 
111         DependencyManagementRenderer r =
112             new DependencyManagementRenderer( getSink(), locale, getI18N( locale ), getLog(), getManagementDependencies(),
113                                               artifactFactory, mavenProjectBuilder, remoteRepositories,
114                                               localRepository, repoUtils );
115         r.render();
116     }
117 
118     /** {@inheritDoc} */
119     public String getOutputName()
120     {
121         return "dependency-management";
122     }
123 
124     @Override
125     protected String getI18Nsection()
126     {
127         return "dependencyManagement";
128     }
129 
130     @Override
131     public boolean canGenerateReport()
132     {
133         return getManagementDependencies().hasDependencies();
134     }
135 
136     // ----------------------------------------------------------------------
137     // Private methods
138     // ----------------------------------------------------------------------
139 
140     private ManagementDependencies getManagementDependencies()
141     {
142         if ( managementDependencies != null )
143         {
144             return managementDependencies;
145         }
146 
147         if ( project.getDependencyManagement() == null )
148         {
149             managementDependencies = new ManagementDependencies( null );
150         }
151         else
152         {
153             managementDependencies = new ManagementDependencies( project.getDependencyManagement().getDependencies() );
154         }
155 
156         return managementDependencies;
157     }
158 }