added system properties support
This commit is contained in:
@@ -1,23 +1,5 @@
|
||||
package net.woggioni.gradle.envelope;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.InputStream;
|
||||
import java.security.MessageDigest;
|
||||
import java.util.Base64;
|
||||
import java.util.Collections;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Properties;
|
||||
import java.util.Set;
|
||||
import java.util.function.Supplier;
|
||||
import java.util.jar.Attributes;
|
||||
import java.util.jar.JarFile;
|
||||
import java.util.jar.Manifest;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipInputStream;
|
||||
import java.util.zip.ZipOutputStream;
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.inject.Inject;
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.SneakyThrows;
|
||||
@@ -38,6 +20,25 @@ import org.gradle.api.tasks.WorkResult;
|
||||
import org.gradle.api.tasks.bundling.AbstractArchiveTask;
|
||||
import org.gradle.util.GradleVersion;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.inject.Inject;
|
||||
import java.io.File;
|
||||
import java.io.InputStream;
|
||||
import java.security.MessageDigest;
|
||||
import java.util.Base64;
|
||||
import java.util.Collections;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Properties;
|
||||
import java.util.Set;
|
||||
import java.util.TreeMap;
|
||||
import java.util.function.Supplier;
|
||||
import java.util.jar.Attributes;
|
||||
import java.util.jar.JarFile;
|
||||
import java.util.jar.Manifest;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipInputStream;
|
||||
import java.util.zip.ZipOutputStream;
|
||||
|
||||
import static java.util.zip.Deflater.BEST_COMPRESSION;
|
||||
import static java.util.zip.Deflater.NO_COMPRESSION;
|
||||
@@ -62,6 +63,9 @@ public class EnvelopeJarTask extends AbstractArchiveTask {
|
||||
|
||||
private final Properties javaAgents = new Properties();
|
||||
|
||||
@Getter(onMethod_ = {@Input})
|
||||
private final Map<String, String> systemProperties = new TreeMap<>();
|
||||
|
||||
@Input
|
||||
public Set<Map.Entry<Object, Object>> getJavaAgents() {
|
||||
return Collections.unmodifiableSet(javaAgents.entrySet());
|
||||
@@ -71,6 +75,10 @@ public class EnvelopeJarTask extends AbstractArchiveTask {
|
||||
javaAgents.put(className, args);
|
||||
}
|
||||
|
||||
public void systemProperty(String key, String value) {
|
||||
systemProperties.put(key, value);
|
||||
}
|
||||
|
||||
public void includeLibraries(Object... files) {
|
||||
into(Constants.LIBRARIES_FOLDER, (copySpec) -> copySpec.from(files));
|
||||
}
|
||||
@@ -86,7 +94,6 @@ public class EnvelopeJarTask extends AbstractArchiveTask {
|
||||
getArchiveExtension().convention("jar");
|
||||
getArchiveVersion().convention(getProject().getVersion().toString());
|
||||
getArchiveAppendix().convention("envelope");
|
||||
exclude("**/module-info.class");
|
||||
|
||||
mainClass = objects.property(String.class);
|
||||
mainModule = objects.property(String.class);
|
||||
@@ -257,6 +264,14 @@ public class EnvelopeJarTask extends AbstractArchiveTask {
|
||||
zipEntry.setMethod(ZipEntry.DEFLATED);
|
||||
zipOutputStream.putNextEntry(zipEntry);
|
||||
javaAgents.store(zipOutputStream, null);
|
||||
zipEntry = zipEntryFactory.createZipEntry(Constants.SYSTEM_PROPERTIES_FILE);
|
||||
zipEntry.setMethod(ZipEntry.DEFLATED);
|
||||
zipOutputStream.putNextEntry(zipEntry);
|
||||
Properties props = new Properties();
|
||||
for(Map.Entry<String, String> entry : systemProperties.entrySet()) {
|
||||
props.setProperty(entry.getKey(), entry.getValue());
|
||||
}
|
||||
props.store(zipOutputStream, null);
|
||||
|
||||
while (true) {
|
||||
zipEntry = zipInputStream.getNextEntry();
|
||||
|
@@ -7,7 +7,11 @@ import org.gradle.api.plugins.BasePlugin;
|
||||
import org.gradle.api.plugins.BasePluginExtension;
|
||||
import org.gradle.api.plugins.JavaPlugin;
|
||||
import org.gradle.api.provider.Provider;
|
||||
import org.gradle.api.tasks.JavaExec;
|
||||
import org.gradle.api.tasks.bundling.Jar;
|
||||
import org.gradle.process.CommandLineArgumentProvider;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
public class EnvelopePlugin implements Plugin<Project> {
|
||||
@Override
|
||||
@@ -22,5 +26,11 @@ public class EnvelopePlugin implements Plugin<Project> {
|
||||
project.getTasks().named(BasePlugin.ASSEMBLE_TASK_NAME, DefaultTask.class, assembleTask -> {
|
||||
assembleTask.dependsOn(envelopeJarTaskProvider);
|
||||
});
|
||||
Provider<JavaExec> envelopeRunTaskProvider = project.getTasks().register("envelopeRun", JavaExec.class, t -> {
|
||||
t.getInputs().files(envelopeJarTaskProvider);
|
||||
t.setGroup("envelope");
|
||||
t.setDescription("Run the application in the envelope jar");
|
||||
t.classpath(envelopeJarTaskProvider);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user