/** * Finds a current implementation of repository system. A {@link RepositorySystem} is an entry point to dependency * resolution * * @return A repository system * @throws UnsupportedOperationException if {@link RepositorySystem} was not bootstrapped correctly */ private RepositorySystem getRepositorySystem() throws UnsupportedOperationException { final ShrinkWrapResolverServiceLocator locator = new ShrinkWrapResolverServiceLocator(); // if running from inside plugin, we required Maven 3.1.0 or newer // that happens because Maven handles Aether dependencies in plugins a special way so we can't provide our own // implementation, it is simply removed from classpath and not available at all // // locator will throw an exception if repository system cannot be set up return locator.getService(RepositorySystem.class); } }
addService(RepositorySystem.class, DefaultRepositorySystem.class); addService(ArtifactResolver.class, DefaultArtifactResolver.class); addService(DependencyCollector.class, DefaultDependencyCollector.class); addService(Deployer.class, DefaultDeployer.class); addService(Installer.class, DefaultInstaller.class); addService(MetadataResolver.class, DefaultMetadataResolver.class); addService(RepositoryConnectorProvider.class, DefaultRepositoryConnectorProvider.class); addService(RemoteRepositoryManager.class, DefaultRemoteRepositoryManager.class); addService(UpdateCheckManager.class, DefaultUpdateCheckManager.class); addService(UpdatePolicyAnalyzer.class, DefaultUpdatePolicyAnalyzer.class); addService(FileProcessor.class, DefaultFileProcessor.class); addService(SyncContextFactory.class, DefaultSyncContextFactory.class); addService(RepositoryEventDispatcher.class, DefaultRepositoryEventDispatcher.class); addService(OfflineController.class, DefaultOfflineController.class); addService(LocalRepositoryProvider.class, DefaultLocalRepositoryProvider.class); addService(LocalRepositoryManagerFactory.class, SimpleLocalRepositoryManagerFactory.class); addService(LocalRepositoryManagerFactory.class, EnhancedLocalRepositoryManagerFactory.class); addService(ArtifactDescriptorReader.class, DefaultArtifactDescriptorReader.class); addService(VersionResolver.class, DefaultVersionResolver.class); addService(VersionRangeResolver.class, DefaultVersionRangeResolver.class); addService(MetadataGeneratorFactory.class, SnapshotMetadataGeneratorFactory.class); addService(MetadataGeneratorFactory.class, VersionsMetadataGeneratorFactory.class); setServices(ModelBuilder.class, new DefaultModelBuilderFactory().newInstance()); setServices(WagonProvider.class, new ManualWagonProvider()); addService(RepositoryConnectorFactory.class, BasicRepositoryConnectorFactory.class); addService(TransporterProvider.class, DefaultTransporterProvider.class);
@Override public <T> T getService(Class<T> serviceType) { List<T> services = getServices(serviceType); if (services.size() == 1) { return services.iterator().next(); } if (services.size() > 1) { throw new IllegalStateException(MessageFormat.format( "Unable to identify service for {0}, multiple ({1}) services implementations were registered.", serviceType.getName(), services.size())); } // this represents and exception we can't recover from if (serviceType.isAssignableFrom(RepositorySystem.class)) { // zero services available throw new IllegalStateException( "Unable to boostrap Aether repository system, missing RepositoryService " + serviceType.getName() + ", probably due to missing or invalid Aether dependencies. " + " You are either running from within Maven plugin with Maven 3.0.x version (make sure to update to Maven 3.1.0 or newer) or " + " you have org.apache.maven:maven-aether-provider:3.0.x on classpath shading required binding (make sure to update dependencies in your project)."); } // there might be some services, however we can live with them being null return null; }
addService(RepositorySystem.class, DefaultRepositorySystem.class); addService(ArtifactResolver.class, DefaultArtifactResolver.class); addService(DependencyCollector.class, DefaultDependencyCollector.class); addService(Deployer.class, DefaultDeployer.class); addService(Installer.class, DefaultInstaller.class); addService(MetadataResolver.class, DefaultMetadataResolver.class); addService(RepositoryConnectorProvider.class, DefaultRepositoryConnectorProvider.class); addService(RemoteRepositoryManager.class, DefaultRemoteRepositoryManager.class); addService(UpdateCheckManager.class, DefaultUpdateCheckManager.class); addService(UpdatePolicyAnalyzer.class, DefaultUpdatePolicyAnalyzer.class); addService(FileProcessor.class, DefaultFileProcessor.class); addService(SyncContextFactory.class, DefaultSyncContextFactory.class); addService(RepositoryEventDispatcher.class, DefaultRepositoryEventDispatcher.class); addService(OfflineController.class, DefaultOfflineController.class); addService(LocalRepositoryProvider.class, DefaultLocalRepositoryProvider.class); addService(LocalRepositoryManagerFactory.class, SimpleLocalRepositoryManagerFactory.class); addService(LocalRepositoryManagerFactory.class, EnhancedLocalRepositoryManagerFactory.class); addService(ArtifactDescriptorReader.class, DefaultArtifactDescriptorReader.class); addService(VersionResolver.class, DefaultVersionResolver.class); addService(VersionRangeResolver.class, DefaultVersionRangeResolver.class); addService(MetadataGeneratorFactory.class, SnapshotMetadataGeneratorFactory.class); addService(MetadataGeneratorFactory.class, VersionsMetadataGeneratorFactory.class); setServices(ModelBuilder.class, new DefaultModelBuilderFactory().newInstance()); setServices(WagonProvider.class, new ManualWagonProvider()); addService(RepositoryConnectorFactory.class, BasicRepositoryConnectorFactory.class); addService(TransporterProvider.class, DefaultTransporterProvider.class);
@Override public <T> T getService(Class<T> serviceType) { List<T> services = getServices(serviceType); if (services.size() == 1) { return services.iterator().next(); } if (services.size() > 1) { throw new IllegalStateException(MessageFormat.format( "Unable to identify service for {0}, multiple ({1}) services implementations were registered.", serviceType.getName(), services.size())); } // this represents and exception we can't recover from if (serviceType.isAssignableFrom(RepositorySystem.class)) { // zero services available throw new IllegalStateException( "Unable to boostrap Aether repository system, missing RepositoryService " + serviceType.getName() + ", probably due to missing or invalid Aether dependencies. " + " You are either running from within Maven plugin with Maven 3.0.x version (make sure to update to Maven 3.1.0 or newer) or " + " you have org.apache.maven:maven-aether-provider:3.0.x on classpath shading required binding (make sure to update dependencies in your project)."); } // there might be some services, however we can live with them being null return null; }
/** * Finds a current implementation of repository system. A {@link RepositorySystem} is an entry point to dependency * resolution * * @return A repository system * @throws UnsupportedOperationException if {@link RepositorySystem} was not bootstrapped correctly */ private RepositorySystem getRepositorySystem() throws UnsupportedOperationException { final ShrinkWrapResolverServiceLocator locator = new ShrinkWrapResolverServiceLocator(); // if running from inside plugin, we required Maven 3.1.0 or newer // that happens because Maven handles Aether dependencies in plugins a special way so we can't provide our own // implementation, it is simply removed from classpath and not available at all // // locator will throw an exception if repository system cannot be set up return locator.getService(RepositorySystem.class); } }