![JAR search and dependency download from the Maven repository](/logo.png)
shiver.me.timbers.plugins.invoker.multi.DefaultInvocationRequestFactory Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of multi-invoker-maven-plugin Show documentation
Show all versions of multi-invoker-maven-plugin Show documentation
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.execution.MavenSession;
import org.apache.maven.plugin.logging.Log;
import org.apache.maven.project.MavenProject;
import org.apache.maven.shared.invoker.DefaultInvocationRequest;
import org.apache.maven.shared.invoker.InvocationRequest;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.annotations.Requirement;
import java.util.List;
import java.util.Properties;
import static shiver.me.timbers.plugins.invoker.multi.MultiInvokerMojo.INVOCATION_ID;
/**
* @author Karl Bennett
*/
@Component(role = InvocationRequestFactory.class, hint = "default")
class DefaultInvocationRequestFactory implements InvocationRequestFactory {
@Requirement
private MultiInvokerConfigurationReplacer configurationReplacer;
@Requirement
private OutputHandlerFactory outputHandlerFactory;
@Requirement
private PropertiesAppender propertiesAppender;
DefaultInvocationRequestFactory() {
}
DefaultInvocationRequestFactory(
MultiInvokerConfigurationReplacer configurationReplacer,
OutputHandlerFactory outputHandlerFactory,
PropertiesAppender propertiesAppender
) {
this.configurationReplacer = configurationReplacer;
this.outputHandlerFactory = outputHandlerFactory;
this.propertiesAppender = propertiesAppender;
}
@Override
public InvocationRequest create(MultiInvokerConfiguration configuration) {
return createReplacedRequest(configurationReplacer.resolveSubstitutions(configuration));
}
/**
* This method if functionally redundant, but exists to stop the possibility of accidentally using the root
* configuration.
*/
private InvocationRequest createReplacedRequest(MultiInvokerConfiguration configuration) {
final InvocationRequest request = new DefaultInvocationRequest();
final MavenProject project = configuration.getProject();
final MavenSession session = configuration.getSession();
final Log log = configuration.getLog();
request.setOutputHandler(outputHandlerFactory.createInfoFrom(log));
request.setErrorHandler(outputHandlerFactory.createErrorFrom(log));
request.setProfiles(configuration.getProfiles());
request.setBaseDirectory(project.getBasedir());
request.setPomFile(project.getFile());
request.setGoals(chooseGoals(configuration, session));
request.setProperties(configureProperties(session, configuration));
return request;
}
private Properties configureProperties(MavenSession session, MultiInvokerConfiguration configuration) {
final Properties properties = propertiesAppender.append(
configuration.getProperties(),
session.getSystemProperties(),
session.getUserProperties()
);
properties.setProperty(INVOCATION_ID, configuration.getInvocationId());
return properties;
}
private static List chooseGoals(MultiInvokerConfiguration configuration, MavenSession session) {
final List goals = configuration.getGoals();
if (goals != null && !goals.isEmpty()) {
return goals;
}
return session.getGoals();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy