/* * JBoss, Home of Professional Open Source * Copyright 2012, Red Hat Middleware LLC, and individual contributors * by the @authors tag. See the copyright.txt in the distribution for a * full listing of individual contributors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.jboss.shrinkwrap.resolver.api.maven; import org.jboss.shrinkwrap.resolver.api.Resolvers; /** * Shorthand convenience API where the call {@link Maven#resolver()} is analogous to a more longhand, formal call to * {@link Resolvers#use(Class)}, passing {@link MavenResolverSystem} as the argument. Also supports configuration via * {@link Maven#configureResolver()}. * * @author <a href="mailto:alr@jboss.org">Andrew Lee Rubinger</a> */ public class Maven { /** * Creates and returns a new {@link MavenResolverSystem} instance * * @return A new {@link MavenResolverSystem} instance */ public static MavenResolverSystem resolver() { return Resolvers.use(MavenResolverSystem.class); } /** * Creates and returns a new {@link ConfigurableMavenResolverSystem} instance which may be used to create new * {@link MavenResolverSystem} instances * * @return A new {@link ConfigurableMavenResolverSystem} instance which may be used to create new * {@link MavenResolverSystem} instances */ public static ConfigurableMavenResolverSystem configureResolver() { return Resolvers.configure(ConfigurableMavenResolverSystem.class); } /** * Configures the {@link MavenResolverSystem} with <code>settings.xml</code> and POM metadata as picked up from the * environment (these properties are set by the ShrinkWrap Maven Resolver Plugin). The new instance will be created * by the current {@link Thread#getContextClassLoader()}. * * @return The {@link MavenResolverSystem} configured with <code>settings.xml</code> and POM metadata as picked up * from the environment * @throws InvalidEnvironmentException * If this is executed outside the context of the ShrinkWrap Maven Resolver Plugin Environment */ public static PomEquippedResolveStage configureResolverViaPlugin() throws InvalidEnvironmentException { return configureResolverViaPlugin(SecurityActions.getThreadContextClassLoader()); } /** * Configures the {@link MavenResolverSystem} with <code>settings.xml</code> and POM metadata as picked up from the * environment (these properties are set by the ShrinkWrap Maven Resolver Plugin). * * @param cl The {@link ClassLoader} used to create the new instance; required * @return The {@link MavenResolverSystem} configured with <code>settings.xml</code> and POM metadata as picked up * from the environment * @throws IllegalArgumentException * If the {@link ClassLoader} is not specified * @throws InvalidEnvironmentException * If this is executed outside the context of the ShrinkWrap Maven Resolver Plugin Environment */ public static PomEquippedResolveStage configureResolverViaPlugin(final ClassLoader cl) throws InvalidEnvironmentException, IllegalArgumentException { final ConfigurableMavenResolverSystem resolverSystem = Resolvers.use(ConfigurableMavenResolverSystem.class, cl); return resolverSystem.configureViaPlugin(); } }