added wildfly plugin
This commit is contained in:
13
wildfly/build.gradle
Normal file
13
wildfly/build.gradle
Normal file
@@ -0,0 +1,13 @@
|
||||
plugins {
|
||||
id 'maven-publish'
|
||||
id 'java-gradle-plugin'
|
||||
}
|
||||
|
||||
gradlePlugin {
|
||||
plugins {
|
||||
create("WildflyPlugin") {
|
||||
id = "net.woggioni.gradle.wildfly"
|
||||
implementationClass = "net.woggioni.gradle.wildfly.WildflyPlugin"
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,76 @@
|
||||
package net.woggioni.gradle.wildfly;
|
||||
|
||||
import lombok.Getter;
|
||||
import org.gradle.api.file.RegularFileProperty;
|
||||
import org.gradle.api.model.ObjectFactory;
|
||||
import org.gradle.api.provider.Property;
|
||||
import org.gradle.api.provider.Provider;
|
||||
import org.gradle.api.tasks.Exec;
|
||||
import org.gradle.api.tasks.Input;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.inject.Inject;
|
||||
import java.util.Arrays;
|
||||
|
||||
public class Deploy2WildflyTask extends Exec {
|
||||
private static final String PROPERTY_PREFIX = "net.woggioni.gradle.wildfly.";
|
||||
private static final String HOST_PROPERTY_KEY = PROPERTY_PREFIX + "rpcHost";
|
||||
private static final String PORT_PROPERTY_KEY = PROPERTY_PREFIX + "rpcPort";
|
||||
private static final String USER_NAME_PROPERTY_KEY = PROPERTY_PREFIX + "rpcUsername";
|
||||
private static final String PASSWORD_PROPERTY_KEY = PROPERTY_PREFIX + "rpcPassword";
|
||||
|
||||
@Input
|
||||
@Getter
|
||||
private final Property<String> rpcHost;
|
||||
|
||||
@Input
|
||||
@Getter
|
||||
private final Property<Integer> rpcPort;
|
||||
|
||||
@Input
|
||||
@Getter
|
||||
private final Property<String> rpcUsername;
|
||||
|
||||
@Input
|
||||
@Getter
|
||||
private final Property<String> rpcPassword;
|
||||
|
||||
@Input
|
||||
@Getter
|
||||
private final RegularFileProperty artifact;
|
||||
|
||||
private String projectProperty(String key, String defaultValue) {
|
||||
String result = (String) getProject().findProperty(key);
|
||||
return result == null ? defaultValue : result;
|
||||
}
|
||||
|
||||
@Inject
|
||||
public Deploy2WildflyTask(@Nonnull ObjectFactory objectFactory) {
|
||||
setGroup("deploy");
|
||||
setDescription("Deploy this project artifact to Wildfly application server");
|
||||
Provider<String> defaultHostProvider = getProject()
|
||||
.provider(() -> projectProperty(HOST_PROPERTY_KEY, "localhost"));
|
||||
Provider<Integer> defaultPortProvider = getProject()
|
||||
.provider(() -> Integer.parseInt(projectProperty(PORT_PROPERTY_KEY, "9990")));
|
||||
Provider<String> defaultUsernameProvider = getProject()
|
||||
.provider(() -> projectProperty(USER_NAME_PROPERTY_KEY, "admin"));
|
||||
Provider<String> defaultPasswordProvider = getProject()
|
||||
.provider(() -> projectProperty(PASSWORD_PROPERTY_KEY, "password"));
|
||||
|
||||
executable("/opt/wildfly/bin/jboss-cli.sh");
|
||||
rpcHost = objectFactory.property(String.class).convention(defaultHostProvider);
|
||||
rpcPort = objectFactory.property(Integer.class).convention(defaultPortProvider);
|
||||
rpcUsername = objectFactory.property(String.class).convention(defaultUsernameProvider);
|
||||
rpcPassword = objectFactory.property(String.class).convention(defaultPasswordProvider);
|
||||
artifact = objectFactory.fileProperty();
|
||||
|
||||
getArgumentProviders().add(() ->
|
||||
Arrays.asList(
|
||||
"--controller=" + rpcHost.get() + ":" + rpcPort.get(),
|
||||
"--connect",
|
||||
"--user=" + rpcUsername.get(),
|
||||
"--password=" + rpcPassword.get(),
|
||||
"--command=deploy " + artifact.getAsFile().get().getPath() + " --force")
|
||||
);
|
||||
}
|
||||
}
|
@@ -0,0 +1,32 @@
|
||||
package net.woggioni.gradle.wildfly;
|
||||
|
||||
import org.gradle.api.GradleException;
|
||||
import org.gradle.api.Plugin;
|
||||
import org.gradle.api.Project;
|
||||
import org.gradle.api.tasks.TaskCollection;
|
||||
import org.gradle.api.tasks.TaskProvider;
|
||||
import org.gradle.api.tasks.bundling.AbstractArchiveTask;
|
||||
|
||||
public class WildflyPlugin implements Plugin<Project> {
|
||||
@Override
|
||||
public void apply(Project project) {
|
||||
project.getTasks().register("deploy2Wildfly", Deploy2WildflyTask.class, deploy2WildflyTask -> {
|
||||
TaskCollection<AbstractArchiveTask> candidates = project.getTasks().withType(AbstractArchiveTask.class);
|
||||
TaskProvider<AbstractArchiveTask> warTask = candidates.named("war", AbstractArchiveTask.class);
|
||||
TaskProvider<AbstractArchiveTask> selected;
|
||||
if(warTask.isPresent()) {
|
||||
selected = warTask;
|
||||
} else {
|
||||
TaskProvider<AbstractArchiveTask> jarTask = candidates.named("jar", AbstractArchiveTask.class);
|
||||
if(jarTask.isPresent()) {
|
||||
selected = jarTask;
|
||||
} else {
|
||||
throw new GradleException("No suitable archiving task found in the current project");
|
||||
}
|
||||
}
|
||||
deploy2WildflyTask.getInputs().files(selected);
|
||||
deploy2WildflyTask.getArtifact()
|
||||
.fileProvider(selected.map(t -> t.getOutputs().getFiles().getSingleFile()));
|
||||
});
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user