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

com.g2forge.gearbox.maven.IMaven Maven / Gradle / Ivy

The newest version!
package com.g2forge.gearbox.maven;

import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import com.g2forge.alexandria.java.core.helpers.HCollection;
import com.g2forge.gearbox.command.converter.IMethodArgument;
import com.g2forge.gearbox.command.converter.dumb.ArgumentRenderer;
import com.g2forge.gearbox.command.converter.dumb.Command;
import com.g2forge.gearbox.command.converter.dumb.HDumbCommandConverter;
import com.g2forge.gearbox.command.converter.dumb.IArgumentRenderer;
import com.g2forge.gearbox.command.converter.dumb.Named;
import com.g2forge.gearbox.command.converter.dumb.Working;
import com.g2forge.gearbox.command.process.IProcess;
import com.g2forge.gearbox.command.proxy.method.ICommandInterface;

public interface IMaven extends ICommandInterface {
	public static class MavenCoordinatesArgumentRenderer implements IArgumentRenderer {
		@Override
		public List render(IMethodArgument argument) {
			final String coordinates = argument.get().toString();
			return HDumbCommandConverter.computeString(argument, coordinates);
		}
	}

	public static class MavenProfilesArgumentRenderer implements IArgumentRenderer> {
		@Override
		public List render(IMethodArgument> argument) {
			final List profiles = argument.get();
			if (profiles == null || profiles.isEmpty()) return HCollection.emptyList();
			return HCollection.asList("-P" + profiles.stream().collect(Collectors.joining(",")));
		}
	}

	public static Path mvn = Paths.get("mvn");

	@Command({ "mvn", "dependency:copy" })
	public IProcess dependencyCopy(@Working Path path, @ArgumentRenderer(MavenCoordinatesArgumentRenderer.class) @Named("-Dartifact=") MavenCoordinates artifact, @Named("-DoutputDirectory=") Path outputDirectory);

	@Command({ "mvn", "help:effective-pom", "--non-recursive" })
	public Stream effectivePOM(@Working Path path, @Named("-Doutput=") Path output);

	@Command({})
	public Stream maven(@Working Path path, Path maven, String goal, @ArgumentRenderer(MavenProfilesArgumentRenderer.class) List profiles);
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy