All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.pfabulist.ianalb.mojo.LicenseCheckMojo Maven / Gradle / Ivy

//package de.pfabulist.ianalb.mojo;
//
//import de.pfabulist.loracle.mojo.Findings;
//import de.pfabulist.ianalb.model.oracle.Aliases;
//import de.pfabulist.ianalb.model.Check;
//import de.pfabulist.loracle.license.Coordinates;
//import de.pfabulist.ianalb.model.oracle.GuessLicense;
//import de.pfabulist.ianalb.model.oracle.KnownLicenses;
//import de.pfabulist.ianalb.model.license.IBLicense;
//import de.pfabulist.ianalb.model.license.Licenses;
//import de.pfabulist.ianalb.model.oracle.UrlToName;
//import de.pfabulist.unchecked.Unchecked;
//import org.apache.maven.artifact.Artifact;
//import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
//import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter;
//import org.apache.maven.execution.MavenSession;
//import org.apache.maven.plugin.AbstractMojo;
//import org.apache.maven.plugin.MojoExecutionException;
//import org.apache.maven.plugin.MojoFailureException;
//import org.apache.maven.project.MavenProject;
//import org.apache.maven.shared.dependency.graph.DependencyGraphBuilder;
//import org.apache.maven.shared.dependency.graph.DependencyNode;
//import org.apache.maven.shared.dependency.graph.traversal.DependencyNodeVisitor;
//
//import javax.annotation.Nullable;
//import java.nio.file.Path;
//import java.nio.file.Paths;
//import java.util.ArrayList;
//import java.util.List;
//import java.util.Optional;
//
//import static de.pfabulist.nonnullbydefault.NonnullCheck._ni;
//
///**
// * Copyright (c) 2006 - 2016, Stephan Pfab
// * SPDX-License-Identifier: BSD-2-Clause
// */
//
////@Mojo( name = "license-check", defaultPhase = LifecyclePhase.INSTALL, requiresDependencyResolution = ResolutionScope.TEST, threadSafe = true )
//public class LicenseCheckMojo extends AbstractMojo {
//
////    @Component
//    @Nullable
//    DependencyGraphBuilder dependencyGraphBuilder;
//
////    @Parameter( defaultValue = "${project}", readonly = true )
//    @Nullable
//    MavenProject project;
//
////    @Parameter( defaultValue = "${session}", required = true, readonly = true )
//    @Nullable private MavenSession session;
//
//    @SuppressWarnings( "PMD.AvoidPrintStackTrace" )
//    public void execute() throws MojoExecutionException, MojoFailureException {
//        getLog().info( "---------------------------------------" );
//        getLog().info( "      license check                    " );
//        getLog().info( "---------------------------------------" );
//
//        MavenProject _project = _ni( project );
//        Path localRepo = Paths.get( _ni(session).getLocalRepository().getBasedir() );
//
//        try {
//
//            if( _project.getLicenses() == null || _project.getLicenses().isEmpty() ) {
//                throw new MojoFailureException( "no license set" );
//            }
//
//            if( _project.getLicenses().size() > 1 ) {
//                getLog().info( "license check can't deal with multiple licenses (yet)" );
//                return;
//            }
//
//            Findings failures = new Findings( getLog() );
//            Licenses licenses = new Licenses();
//            Aliases aliases = new Aliases( licenses );
//            GuessLicense guessLicense = new GuessLicense( failures,
//                                                          localRepo,
//                                                          new KnownLicenses( licenses ),
//                                                          aliases,
//                                                          new UrlToName( licenses ), licenses );
//            //License projLi = _project.getLicenses().get( 0 ).getName();
//            IBLicense projectLicense = guessLicense.guess( Coordinates.valueOf( _project.getArtifact() ),
//                                                           Optional.of( _project.getLicenses().get( 0 ))).
//                    orElseThrow( () -> new MojoFailureException( "project without license" ) );
//            Check check = new Check( licenses );
//
//
//            ArtifactFilter artifactFilter = createResolvingArtifactFilter();
//
//            DependencyNode rootNode = _ni( dependencyGraphBuilder ).buildDependencyGraph( project, artifactFilter );
//
//            final List dependencies = new ArrayList<>();
//
//            rootNode.accept( new DependencyNodeVisitor() {
//                @Override
//                public boolean visit( DependencyNode dependencyNode ) {
//                    dependencies.add( dependencyNode.getArtifact() );
//                    return true;
//                }
//
//                @Override
//                public boolean endVisit( DependencyNode dependencyNode ) {
//                    return true;
//                }
//            } );
//
//            if ( dependencies.size() > 1 ) {
//                dependencies.subList(1, dependencies.size()).stream().forEach(a -> {
//                    getLog().info("" + a);
//
//                    Optional depLicense = guessLicense.guess(a);
//
//                    if (depLicense.isPresent()) {
//                        getLog().info("   license is: " + depLicense.get());
//                        if (!check.isCompatible(projectLicense, depLicense.get())) {
//                            throw Unchecked.u(new MojoFailureException("licenses not compatible " + projectLicense + " " + depLicense.get()));
//                        }
//                    } else {
//                        getLog().info("   license is: huh!!!!");
//                    }
//                });
//            }
//
//            failures.throwOnError();
//
//        } catch( MojoFailureException e ) {
//            throw e;
//        } catch( Exception e ) {
//            e.printStackTrace();
//            throw new MojoFailureException( e.getMessage() );
//        }
//
//    }
//
//    /**
//     * Gets the artifact filter to use when resolving the dependency tree.
//     *
//     * @return the artifact filter
//     */
//    private ArtifactFilter createResolvingArtifactFilter() {
//        ArtifactFilter filter;
//
//        // filter scope
////        if ( scope != null )
//        {
//            getLog().debug( "+ Resolving dependency tree for scope '" ); //+ scope + "'" );
//
//            filter = new ScopeArtifactFilter( "compile" );
//        }
//        //       else
//        {
//            //   filter = null;
//        }
//
//        return filter;
//    }
//
//
//
//}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy