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

shiver.me.timbers.plugins.invoker.multi.DefaultInvocationRequestsFactory Maven / Gradle / Ivy

Go to download

This plugin can be used to invoke the current maven project multiple times with different profiles or properties.

The newest version!
package shiver.me.timbers.plugins.invoker.multi;

import org.apache.maven.model.Profile;
import org.apache.maven.shared.invoker.InvocationRequest;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.annotations.Requirement;

import java.util.ArrayList;
import java.util.List;

/**
 * @author Karl Bennett
 */
@Component(role = InvocationRequestsFactory.class, hint = "default")
class DefaultInvocationRequestsFactory implements InvocationRequestsFactory {

    @Requirement
    private MultiInvokerConfigurationFactory configurationFactory;

    @Requirement
    private InvocationRequestFactory requestFactory;

    DefaultInvocationRequestsFactory() {
    }

    DefaultInvocationRequestsFactory(
        MultiInvokerConfigurationFactory configurationFactory,
        InvocationRequestFactory requestFactory
    ) {
        this.configurationFactory = configurationFactory;
        this.requestFactory = requestFactory;
    }

    @Override
    public List create(
        MultiInvokerConfiguration configuration
    ) {
        if (configuration.isForEachProfile()) {
            return createRequestsForProfiles(configuration);
        }
        return createRequestsForItems(configuration);
    }

    private List createRequestsForProfiles(MultiInvokerConfiguration configuration) {
        final List requests = new ArrayList<>();
        for (Profile profile : configuration.getProject().getModel().getProfiles()) {
            requests.add(
                requestFactory.create(
                    configurationFactory.forProfile(configuration, profile)
                )
            );
        }
        return requests;
    }

    private List createRequestsForItems(
        MultiInvokerConfiguration configuration
    ) {
        final List requests = new ArrayList<>();
        for (String item : configuration.getInvocations()) {
            requests.add(
                requestFactory.create(
                    configurationFactory.forInvocation(configuration, item)
                )
            );
        }
        return requests;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy