001    /*
002     * #%L
003     * License Maven Plugin
004     *
005     * $Id: MavenProjectDependenciesConfigurator.java 14741 2011-09-20 08:31:41Z tchemit $
006     * $HeadURL: http://svn.codehaus.org/mojo/tags/license-maven-plugin-1.0/src/main/java/org/codehaus/mojo/license/MavenProjectDependenciesConfigurator.java $
007     * %%
008     * Copyright (C) 2011 CodeLutin, Codehaus, Tony Chemit
009     * %%
010     * This program is free software: you can redistribute it and/or modify
011     * it under the terms of the GNU Lesser General Public License as
012     * published by the Free Software Foundation, either version 3 of the
013     * License, or (at your option) any later version.
014     *
015     * This program is distributed in the hope that it will be useful,
016     * but WITHOUT ANY WARRANTY; without even the implied warranty of
017     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
018     * GNU General Lesser Public License for more details.
019     *
020     * You should have received a copy of the GNU General Lesser Public
021     * License along with this program.  If not, see
022     * <http://www.gnu.org/licenses/lgpl-3.0.html>.
023     * #L%
024     */
025    package org.codehaus.mojo.license;
026    
027    import java.util.List;
028    
029    /**
030     * Contract to configure which dependencies will be loaded by the dependency tool via the method
031     * {@link DependenciesTool#loadProjectDependencies(org.apache.maven.project.MavenProject, MavenProjectDependenciesConfigurator, org.apache.maven.artifact.repository.ArtifactRepository, java.util.List, java.util.SortedMap)}
032     *
033     * @author tchemit <chemit@codelutin.com>
034     * @see DependenciesTool
035     * @since 1.0
036     */
037    public interface MavenProjectDependenciesConfigurator
038    {
039    
040        /**
041         * @return {@code true} if should include transitive dependencies, {@code false} to include only direct
042         *         dependencies.
043         */
044        boolean isIncludeTransitiveDependencies();
045    
046        /**
047         * @return list of scopes to include while loading dependencies, if {@code null} is setted, then include all scopes.
048         */
049        List<String> getIncludedScopes();
050    
051        /**
052         * @return list of scopes to exclude while loading dependencies, if {@code null} is setted, then include all scopes.
053         */
054        List<String> getExcludedScopes();
055    
056        /**
057         * @return a pattern to include dependencies by thier {@code artificatId}, if {@code null} is setted then include
058         *         all artifacts.
059         */
060        String getIncludedArtifacts();
061    
062        /**
063         * @return a pattern to include dependencies by their {@code groupId}, if {@code null} is setted then include
064         *         all artifacts.
065         */
066        String getIncludedGroups();
067    
068        /**
069         * @return a pattern to exclude dependencies by their {@code artifactId}, if {@code null} is setted the no exclude is
070         *         done on artifactId.
071         */
072        String getExcludedGroups();
073    
074        /**
075         * @return a pattern to exclude dependencies by their {@code groupId}, if {@code null} is setted then no exclude
076         *         is done on groupId.
077         */
078        String getExcludedArtifacts();
079    
080        /**
081         * @return {@code true} if verbose mode is on, {@code false} otherwise.
082         */
083        boolean isVerbose();
084    }