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

com.versioneye.mojo.SuperMojo Maven / Gradle / Ivy

Go to download

The maven-indexer project is used by VersionEye to download, read and iterate Maven indexes from Maven repository servers. This project is part of the VersionEye crawling framework.

There is a newer version: 1.1.5
Show newest version
package com.versioneye.mojo;

import com.versioneye.utils.PropertiesUtils;
import com.versioneye.utils.RepositoryUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugins.annotations.Component;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.ProjectBuilder;
import org.sonatype.aether.RepositorySystem;
import org.sonatype.aether.RepositorySystemSession;
import org.sonatype.aether.repository.Authentication;
import org.sonatype.aether.repository.RemoteRepository;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.versioneye.domain.MavenRepository;
import com.versioneye.domain.Repository;
import com.versioneye.persistence.IGlobalSettingDao;
import com.versioneye.persistence.IMavenRepostoryDao;
import com.versioneye.persistence.IProductDao;
import com.versioneye.utils.HttpUtils;

import java.io.File;
import java.util.List;
import java.util.Properties;

/**
 * The Mother of all Mojos!
 */
public abstract class SuperMojo extends AbstractMojo {

    static final Logger logger = LogManager.getLogger(SuperMojo.class.getName());

    @Component
    protected RepositorySystem system;

    @Component
    protected ProjectBuilder projectBuilder;

    @Parameter(defaultValue = "${localRepository}" )
    protected ArtifactRepository localRepository;

    @Parameter( defaultValue="${project}" )
    protected MavenProject project;

    @Parameter( defaultValue="${repositorySystemSession}" )
    protected RepositorySystemSession session;

    @Parameter( defaultValue = "${project.remoteProjectRepositories}")
    protected List repos;

    @Parameter( defaultValue = "${basedir}", property = "basedir", required = true)
    protected File projectDirectory;

    @Parameter( property = "skipKnown")
    protected Boolean skipKnown = Boolean.TRUE;

    protected HttpUtils httpUtils;
    protected RepositoryUtils repositoryUtils = new RepositoryUtils();
    protected MavenRepository mavenRepository;
    protected Repository repository;
    protected IMavenRepostoryDao mavenRepositoryDao;
    protected IProductDao productDao;
    protected IGlobalSettingDao globalSettingDao;
    protected ApplicationContext context;

    public void execute() throws MojoExecutionException, MojoFailureException {
        try{
            context = new ClassPathXmlApplicationContext("applicationContext.xml");
            mavenRepositoryDao = (IMavenRepostoryDao) context.getBean("mavenRepositoryDao");
            productDao = (IProductDao) context.getBean("productDao");
            globalSettingDao = (IGlobalSettingDao) context.getBean("globalSettingDao");
            httpUtils = (HttpUtils) context.getBean("httpUtils");
        } catch (Exception ex){
            logger.error(ex);
        }
    }


    protected void addRepo(MavenRepository repository){
        if (repository == null){
            return ;
        }
        for (RemoteRepository rr : repos ){
            if (rr.getId().equals(repository.getName())){
                return ;
            }
        }
        RemoteRepository remoteRepository = new RemoteRepository(repository.getName(), "default", repository.getUrl());
        remoteRepository.getPolicy(false).setUpdatePolicy("always");
        if (repository.getUsername() != null && !repository.getUsername().isEmpty() && repository.getPassword() != null && !repository.getPassword().isEmpty()){
            Authentication auth = new Authentication(repository.getUsername(), repository.getPassword());
            remoteRepository.setAuthentication(auth);
        }
        repos.add(remoteRepository);
        for (RemoteRepository repo : repos) {
            repo.getPolicy(false).setUpdatePolicy("always");
        }
        logger.info("There are " + repos.size() + " remote repositories in the list");
    }

    protected void addAllRepos(){
        List repositories = mavenRepositoryDao.loadAll();
        for (MavenRepository repository : repositories){
            if (repository.getName().equals("central"))
                continue;
            if (repository.getUrl().equals("http://download.java.net/maven/2/"))
                continue;
            RemoteRepository remoteRepository = new RemoteRepository(repository.getName(), "default", repository.getUrl());
            remoteRepository.getPolicy(false).setUpdatePolicy("always");
            repos.add(remoteRepository);
        }
        logger.info("There are " + repos.size() + " remote repositories in the list");
    }

    protected String getCacheDirectory(String name) throws Exception {
        Properties properties = getProperties();
        String baseDir = properties.getProperty("base_cache");
        File directory = new File(baseDir + "/" + name + "-cache");
        if (directory.exists()){
            directory.delete();
        }
        directory.mkdir();
        logger.info("cache directory for Indexer: " + directory.getAbsolutePath());
        return directory.getAbsolutePath();
    }

    protected String getIndexDirectory(String name) throws Exception {
        Properties properties = getProperties();
        String baseDir = properties.getProperty("base_index");
        File directory = new File(baseDir + "/" + name + "-index");
        if (directory.exists()){
            directory.delete();
        }
        directory.mkdir();
        logger.info("index directory for Indexer: " + directory.getAbsolutePath());
        return directory.getAbsolutePath();
    }

    protected Properties getProperties() throws Exception {
        PropertiesUtils propertiesUtils = new PropertiesUtils();
        String propFile = projectDirectory + "/src/main/resources/settings.properties";

        File file = new File(propFile);
        if (!file.exists())
            throw new MojoExecutionException(propFile + " is missing!");

        return propertiesUtils.readProperties(propFile);
    }

    protected void setRepository(String repoName){
        if (context == null){
            context = new ClassPathXmlApplicationContext("applicationContext.xml");
        }
        repository = (Repository) context.getBean(repoName);
//        mavenProjectProcessor.setRepository(repository);
//        mavenPomProcessor.setRepository(repository);

        mavenRepository = mavenRepositoryDao.findByName(repoName);
        addRepo(mavenRepository);
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy