Programmatically resolving Maven dependencies outside of a plugin - get RepositorySystemSession and RepositorySystem

前端 未结 6 699
Happy的楠姐
Happy的楠姐 2020-12-24 08:55

Maybe this is going to be a larger task than I had originally thought, but regardless, I\'m trying to load a MavenProject from a file and then resolve its depen

6条回答
  •  长情又很酷
    2020-12-24 09:26

    Try this (as can be seen from the ather-demo):

    ...
    LocalRepository localRepository = new LocalRepository("/path/to/local-repo");
    
    RepositorySystem system = getRepositorySystemInstance();
    RepositorySystemSession session = getRepositorySystemSessionInstance(system, localRepository);
    ....
    
    public static RepositorySystem getRepositorySystemInstance()
    {
        /**
         * Aether's components implement org.sonatype.aether.spi.locator.Service to ease manual wiring and using the
         * prepopulated DefaultServiceLocator, we only need to register the repository connector factories.
         */
        MavenServiceLocator locator = new MavenServiceLocator();
        locator.addService(RepositoryConnectorFactory.class, FileRepositoryConnectorFactory.class);
        locator.addService(RepositoryConnectorFactory.class, WagonRepositoryConnectorFactory.class);
        locator.setServices(WagonProvider.class, new ManualWagonProvider());
    
        return locator.getService(RepositorySystem.class);
    }
    
    private static RepositorySystemSession getRepositorySystemSessionInstance(RepositorySystem system,
                                                                              LocalRepository localRepo)
    {
        MavenRepositorySystemSession session = new MavenRepositorySystemSession();
    
        session.setLocalRepositoryManager(system.newLocalRepositoryManager(localRepo));
    
        session.setTransferListener(new ConsoleTransferListener());
        session.setRepositoryListener(new ConsoleRepositoryListener());
    
        // Set this in order to generate dirty trees
        session.setDependencyGraphTransformer(null);
    
        return session;
    }
    

提交回复
热议问题