mirror of
https://github.com/sparrowwallet/drongo.git
synced 2024-12-26 01:56:44 +00:00
upgrade to gradle 7.1, java 16, javafx 16
This commit is contained in:
parent
c021300797
commit
9d3c02d184
10 changed files with 381 additions and 33 deletions
44
build.gradle
44
build.gradle
|
@ -4,25 +4,14 @@ buildscript {
|
||||||
url "https://plugins.gradle.org/m2/"
|
url "https://plugins.gradle.org/m2/"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
dependencies {
|
|
||||||
classpath "org.javamodularity:moduleplugin:1.6.0"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
id 'java'
|
id 'java-library'
|
||||||
|
id 'extra-java-module-info'
|
||||||
id 'com.github.johnrengelman.shadow' version '5.2.0'
|
id 'com.github.johnrengelman.shadow' version '5.2.0'
|
||||||
}
|
}
|
||||||
|
|
||||||
def javamodularityPluginId = 'org.javamodularity.moduleplugin'
|
|
||||||
final hasPlugin = project.getPlugins().hasPlugin(javamodularityPluginId);
|
|
||||||
if(hasPlugin) {
|
|
||||||
final Plugin plugin = project.getPlugins().getPlugin(javamodularityPluginId)
|
|
||||||
println 'Plugin already applied - version ' + plugin.properties['javamodularityPluginId']
|
|
||||||
} else {
|
|
||||||
apply plugin: "org.javamodularity.moduleplugin"
|
|
||||||
}
|
|
||||||
|
|
||||||
tasks.withType(AbstractArchiveTask) {
|
tasks.withType(AbstractArchiveTask) {
|
||||||
preserveFileTimestamps = false
|
preserveFileTimestamps = false
|
||||||
reproducibleFileOrder = true
|
reproducibleFileOrder = true
|
||||||
|
@ -65,7 +54,7 @@ dependencies {
|
||||||
}
|
}
|
||||||
|
|
||||||
task(runDrongo, dependsOn: 'classes', type: JavaExec) {
|
task(runDrongo, dependsOn: 'classes', type: JavaExec) {
|
||||||
main = 'com.sparrowwallet.drongo.Main'
|
mainClass = 'com.sparrowwallet.drongo.Main'
|
||||||
classpath = sourceSets.main.runtimeClasspath
|
classpath = sourceSets.main.runtimeClasspath
|
||||||
args 'drongo.properties'
|
args 'drongo.properties'
|
||||||
}
|
}
|
||||||
|
@ -85,3 +74,30 @@ shadowJar {
|
||||||
archiveVersion = '0.9'
|
archiveVersion = '0.9'
|
||||||
classifier = 'all'
|
classifier = 'all'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extraJavaModuleInfo {
|
||||||
|
module('logback-core-1.2.3.jar', 'logback.core', '1.2.3') {
|
||||||
|
exports('ch.qos.logback.core')
|
||||||
|
exports('ch.qos.logback.core.spi')
|
||||||
|
requires('java.xml')
|
||||||
|
}
|
||||||
|
module('logback-classic-1.2.3.jar', 'logback.classic', '1.2.3') {
|
||||||
|
exports('ch.qos.logback.classic')
|
||||||
|
exports('ch.qos.logback.classic.spi')
|
||||||
|
requires('org.slf4j')
|
||||||
|
requires('logback.core')
|
||||||
|
requires('java.xml')
|
||||||
|
requires('java.logging')
|
||||||
|
}
|
||||||
|
module('jeromq-0.5.0.jar', 'jeromq', '0.5.0') {
|
||||||
|
exports('org.zeromq')
|
||||||
|
}
|
||||||
|
module('json-simple-1.1.1.jar', 'json.simple', '1.1.1') {
|
||||||
|
exports('org.json.simple')
|
||||||
|
exports('org.json.simple.parser')
|
||||||
|
}
|
||||||
|
module('jnacl-1.0.0.jar', 'eu.neilalexander.jnacl', '1.0.0')
|
||||||
|
module('junit-4.12.jar', 'junit', '4.12') {
|
||||||
|
exports('org.junit')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
21
buildSrc/build.gradle
Normal file
21
buildSrc/build.gradle
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
plugins {
|
||||||
|
id 'java-gradle-plugin' // so we can assign and ID to our plugin
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
implementation 'org.ow2.asm:asm:8.0.1'
|
||||||
|
}
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
|
||||||
|
gradlePlugin {
|
||||||
|
plugins {
|
||||||
|
// here we register our plugin with an ID
|
||||||
|
register("extra-java-module-info") {
|
||||||
|
id = "extra-java-module-info"
|
||||||
|
implementationClass = "org.gradle.sample.transform.javamodules.ExtraModuleInfoPlugin"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,54 @@
|
||||||
|
package org.gradle.sample.transform.javamodules;
|
||||||
|
|
||||||
|
import org.gradle.api.Plugin;
|
||||||
|
import org.gradle.api.Project;
|
||||||
|
import org.gradle.api.artifacts.Configuration;
|
||||||
|
import org.gradle.api.attributes.Attribute;
|
||||||
|
import org.gradle.api.plugins.JavaPlugin;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Entry point of our plugin that should be applied in the root project.
|
||||||
|
*/
|
||||||
|
public class ExtraModuleInfoPlugin implements Plugin<Project> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void apply(Project project) {
|
||||||
|
// register the plugin extension as 'extraJavaModuleInfo {}' configuration block
|
||||||
|
ExtraModuleInfoPluginExtension extension = project.getObjects().newInstance(ExtraModuleInfoPluginExtension.class);
|
||||||
|
project.getExtensions().add(ExtraModuleInfoPluginExtension.class, "extraJavaModuleInfo", extension);
|
||||||
|
|
||||||
|
// setup the transform for all projects in the build
|
||||||
|
project.getPlugins().withType(JavaPlugin.class).configureEach(javaPlugin -> configureTransform(project, extension));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void configureTransform(Project project, ExtraModuleInfoPluginExtension extension) {
|
||||||
|
Attribute<String> artifactType = Attribute.of("artifactType", String.class);
|
||||||
|
Attribute<Boolean> javaModule = Attribute.of("javaModule", Boolean.class);
|
||||||
|
|
||||||
|
// compile and runtime classpath express that they only accept modules by requesting the javaModule=true attribute
|
||||||
|
project.getConfigurations().matching(this::isResolvingJavaPluginConfiguration).all(
|
||||||
|
c -> c.getAttributes().attribute(javaModule, true));
|
||||||
|
|
||||||
|
// all Jars have a javaModule=false attribute by default; the transform also recognizes modules and returns them without modification
|
||||||
|
project.getDependencies().getArtifactTypes().getByName("jar").getAttributes().attribute(javaModule, false);
|
||||||
|
|
||||||
|
// register the transform for Jars and "javaModule=false -> javaModule=true"; the plugin extension object fills the input parameter
|
||||||
|
project.getDependencies().registerTransform(ExtraModuleInfoTransform.class, t -> {
|
||||||
|
t.parameters(p -> {
|
||||||
|
p.setModuleInfo(extension.getModuleInfo());
|
||||||
|
p.setAutomaticModules(extension.getAutomaticModules());
|
||||||
|
});
|
||||||
|
t.getFrom().attribute(artifactType, "jar").attribute(javaModule, false);
|
||||||
|
t.getTo().attribute(artifactType, "jar").attribute(javaModule, true);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isResolvingJavaPluginConfiguration(Configuration configuration) {
|
||||||
|
if (!configuration.isCanBeResolved()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return configuration.getName().endsWith(JavaPlugin.COMPILE_CLASSPATH_CONFIGURATION_NAME.substring(1))
|
||||||
|
|| configuration.getName().endsWith(JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME.substring(1))
|
||||||
|
|| configuration.getName().endsWith(JavaPlugin.ANNOTATION_PROCESSOR_CONFIGURATION_NAME.substring(1));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,52 @@
|
||||||
|
package org.gradle.sample.transform.javamodules;
|
||||||
|
|
||||||
|
|
||||||
|
import org.gradle.api.Action;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A data class to collect all the module information we want to add.
|
||||||
|
* Here the class is used as extension that can be configured in the build script
|
||||||
|
* and as input to the ExtraModuleInfoTransform that add the information to Jars.
|
||||||
|
*/
|
||||||
|
public class ExtraModuleInfoPluginExtension {
|
||||||
|
|
||||||
|
private final Map<String, ModuleInfo> moduleInfo = new HashMap<>();
|
||||||
|
private final Map<String, String> automaticModules = new HashMap<>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add full module information for a given Jar file.
|
||||||
|
*/
|
||||||
|
public void module(String jarName, String moduleName, String moduleVersion) {
|
||||||
|
module(jarName, moduleName, moduleVersion, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add full module information, including exported packages and dependencies, for a given Jar file.
|
||||||
|
*/
|
||||||
|
public void module(String jarName, String moduleName, String moduleVersion, @Nullable Action<? super ModuleInfo> conf) {
|
||||||
|
ModuleInfo moduleInfo = new ModuleInfo(moduleName, moduleVersion);
|
||||||
|
if (conf != null) {
|
||||||
|
conf.execute(moduleInfo);
|
||||||
|
}
|
||||||
|
this.moduleInfo.put(jarName, moduleInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add only an automatic module name to a given jar file.
|
||||||
|
*/
|
||||||
|
public void automaticModule(String jarName, String moduleName) {
|
||||||
|
automaticModules.put(jarName, moduleName);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected Map<String, ModuleInfo> getModuleInfo() {
|
||||||
|
return moduleInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected Map<String, String> getAutomaticModules() {
|
||||||
|
return automaticModules;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,164 @@
|
||||||
|
package org.gradle.sample.transform.javamodules;
|
||||||
|
|
||||||
|
import org.gradle.api.artifacts.transform.InputArtifact;
|
||||||
|
import org.gradle.api.artifacts.transform.TransformAction;
|
||||||
|
import org.gradle.api.artifacts.transform.TransformOutputs;
|
||||||
|
import org.gradle.api.artifacts.transform.TransformParameters;
|
||||||
|
import org.gradle.api.file.FileSystemLocation;
|
||||||
|
import org.gradle.api.provider.Provider;
|
||||||
|
import org.gradle.api.tasks.Input;
|
||||||
|
import org.objectweb.asm.ClassWriter;
|
||||||
|
import org.objectweb.asm.ModuleVisitor;
|
||||||
|
import org.objectweb.asm.Opcodes;
|
||||||
|
|
||||||
|
import java.io.*;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.jar.*;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
import java.util.zip.ZipEntry;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An artifact transform that applies additional information to Jars without module information.
|
||||||
|
* The transformation fails the build if a Jar does not contain information and no extra information
|
||||||
|
* was defined for it. This way we make sure that all Jars are turned into modules.
|
||||||
|
*/
|
||||||
|
abstract public class ExtraModuleInfoTransform implements TransformAction<ExtraModuleInfoTransform.Parameter> {
|
||||||
|
|
||||||
|
public static class Parameter implements TransformParameters, Serializable {
|
||||||
|
private Map<String, ModuleInfo> moduleInfo = Collections.emptyMap();
|
||||||
|
private Map<String, String> automaticModules = Collections.emptyMap();
|
||||||
|
|
||||||
|
@Input
|
||||||
|
public Map<String, ModuleInfo> getModuleInfo() {
|
||||||
|
return moduleInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Input
|
||||||
|
public Map<String, String> getAutomaticModules() {
|
||||||
|
return automaticModules;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setModuleInfo(Map<String, ModuleInfo> moduleInfo) {
|
||||||
|
this.moduleInfo = moduleInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAutomaticModules(Map<String, String> automaticModules) {
|
||||||
|
this.automaticModules = automaticModules;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@InputArtifact
|
||||||
|
protected abstract Provider<FileSystemLocation> getInputArtifact();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void transform(TransformOutputs outputs) {
|
||||||
|
Map<String, ModuleInfo> moduleInfo = getParameters().moduleInfo;
|
||||||
|
Map<String, String> automaticModules = getParameters().automaticModules;
|
||||||
|
File originalJar = getInputArtifact().get().getAsFile();
|
||||||
|
String originalJarName = originalJar.getName();
|
||||||
|
|
||||||
|
if (isModule(originalJar)) {
|
||||||
|
outputs.file(originalJar);
|
||||||
|
} else if (moduleInfo.containsKey(originalJarName)) {
|
||||||
|
addModuleDescriptor(originalJar, getModuleJar(outputs, originalJar), moduleInfo.get(originalJarName));
|
||||||
|
} else if (isAutoModule(originalJar)) {
|
||||||
|
outputs.file(originalJar);
|
||||||
|
} else if (automaticModules.containsKey(originalJarName)) {
|
||||||
|
addAutomaticModuleName(originalJar, getModuleJar(outputs, originalJar), automaticModules.get(originalJarName));
|
||||||
|
} else {
|
||||||
|
throw new RuntimeException("Not a module and no mapping defined: " + originalJarName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isModule(File jar) {
|
||||||
|
Pattern moduleInfoClassMrjarPath = Pattern.compile("META-INF/versions/\\d+/module-info.class");
|
||||||
|
try (JarInputStream inputStream = new JarInputStream(new FileInputStream(jar))) {
|
||||||
|
boolean isMultiReleaseJar = containsMultiReleaseJarEntry(inputStream);
|
||||||
|
ZipEntry next = inputStream.getNextEntry();
|
||||||
|
while (next != null) {
|
||||||
|
if ("module-info.class".equals(next.getName())) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (isMultiReleaseJar && moduleInfoClassMrjarPath.matcher(next.getName()).matches()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
next = inputStream.getNextEntry();
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean containsMultiReleaseJarEntry(JarInputStream jarStream) {
|
||||||
|
Manifest manifest = jarStream.getManifest();
|
||||||
|
return manifest != null && Boolean.parseBoolean(manifest.getMainAttributes().getValue("Multi-Release"));
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isAutoModule(File jar) {
|
||||||
|
try (JarInputStream inputStream = new JarInputStream(new FileInputStream(jar))) {
|
||||||
|
return inputStream.getManifest().getMainAttributes().getValue("Automatic-Module-Name") != null;
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private File getModuleJar(TransformOutputs outputs, File originalJar) {
|
||||||
|
return outputs.file(originalJar.getName().substring(0, originalJar.getName().lastIndexOf('.')) + "-module.jar");
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void addAutomaticModuleName(File originalJar, File moduleJar, String moduleName) {
|
||||||
|
try (JarInputStream inputStream = new JarInputStream(new FileInputStream(originalJar))) {
|
||||||
|
Manifest manifest = inputStream.getManifest();
|
||||||
|
manifest.getMainAttributes().put(new Attributes.Name("Automatic-Module-Name"), moduleName);
|
||||||
|
try (JarOutputStream outputStream = new JarOutputStream(new FileOutputStream(moduleJar), inputStream.getManifest())) {
|
||||||
|
copyEntries(inputStream, outputStream);
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void addModuleDescriptor(File originalJar, File moduleJar, ModuleInfo moduleInfo) {
|
||||||
|
try (JarInputStream inputStream = new JarInputStream(new FileInputStream(originalJar))) {
|
||||||
|
try (JarOutputStream outputStream = new JarOutputStream(new FileOutputStream(moduleJar), inputStream.getManifest())) {
|
||||||
|
copyEntries(inputStream, outputStream);
|
||||||
|
outputStream.putNextEntry(new JarEntry("module-info.class"));
|
||||||
|
outputStream.write(addModuleInfo(moduleInfo));
|
||||||
|
outputStream.closeEntry();
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void copyEntries(JarInputStream inputStream, JarOutputStream outputStream) throws IOException {
|
||||||
|
JarEntry jarEntry = inputStream.getNextJarEntry();
|
||||||
|
while (jarEntry != null) {
|
||||||
|
outputStream.putNextEntry(jarEntry);
|
||||||
|
outputStream.write(inputStream.readAllBytes());
|
||||||
|
outputStream.closeEntry();
|
||||||
|
jarEntry = inputStream.getNextJarEntry();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static byte[] addModuleInfo(ModuleInfo moduleInfo) {
|
||||||
|
ClassWriter classWriter = new ClassWriter(0);
|
||||||
|
classWriter.visit(Opcodes.V9, Opcodes.ACC_MODULE, "module-info", null, null, null);
|
||||||
|
ModuleVisitor moduleVisitor = classWriter.visitModule(moduleInfo.getModuleName(), Opcodes.ACC_OPEN, moduleInfo.getModuleVersion());
|
||||||
|
for (String packageName : moduleInfo.getExports()) {
|
||||||
|
moduleVisitor.visitExport(packageName.replace('.', '/'), 0);
|
||||||
|
}
|
||||||
|
moduleVisitor.visitRequire("java.base", 0, null);
|
||||||
|
for (String requireName : moduleInfo.getRequires()) {
|
||||||
|
moduleVisitor.visitRequire(requireName, 0, null);
|
||||||
|
}
|
||||||
|
for (String requireName : moduleInfo.getRequiresTransitive()) {
|
||||||
|
moduleVisitor.visitRequire(requireName, Opcodes.ACC_TRANSITIVE, null);
|
||||||
|
}
|
||||||
|
moduleVisitor.visitEnd();
|
||||||
|
classWriter.visitEnd();
|
||||||
|
return classWriter.toByteArray();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,53 @@
|
||||||
|
package org.gradle.sample.transform.javamodules;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Data class to hold the information that should be added as module-info.class to an existing Jar file.
|
||||||
|
*/
|
||||||
|
public class ModuleInfo implements Serializable {
|
||||||
|
private String moduleName;
|
||||||
|
private String moduleVersion;
|
||||||
|
private List<String> exports = new ArrayList<>();
|
||||||
|
private List<String> requires = new ArrayList<>();
|
||||||
|
private List<String> requiresTransitive = new ArrayList<>();
|
||||||
|
|
||||||
|
ModuleInfo(String moduleName, String moduleVersion) {
|
||||||
|
this.moduleName = moduleName;
|
||||||
|
this.moduleVersion = moduleVersion;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void exports(String exports) {
|
||||||
|
this.exports.add(exports);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void requires(String requires) {
|
||||||
|
this.requires.add(requires);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void requiresTransitive(String requiresTransitive) {
|
||||||
|
this.requiresTransitive.add(requiresTransitive);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getModuleName() {
|
||||||
|
return moduleName;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected String getModuleVersion() {
|
||||||
|
return moduleVersion;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected List<String> getExports() {
|
||||||
|
return exports;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected List<String> getRequires() {
|
||||||
|
return requires;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected List<String> getRequiresTransitive() {
|
||||||
|
return requiresTransitive;
|
||||||
|
}
|
||||||
|
}
|
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Binary file not shown.
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
|
@ -1,5 +1,5 @@
|
||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
|
|
2
gradlew
vendored
2
gradlew
vendored
|
@ -82,6 +82,7 @@ esac
|
||||||
|
|
||||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||||
|
|
||||||
|
|
||||||
# Determine the Java command to use to start the JVM.
|
# Determine the Java command to use to start the JVM.
|
||||||
if [ -n "$JAVA_HOME" ] ; then
|
if [ -n "$JAVA_HOME" ] ; then
|
||||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||||
|
@ -129,6 +130,7 @@ fi
|
||||||
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
|
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
|
||||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
||||||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
||||||
|
|
||||||
JAVACMD=`cygpath --unix "$JAVACMD"`
|
JAVACMD=`cygpath --unix "$JAVACMD"`
|
||||||
|
|
||||||
# We build the pattern for arguments to be converted via cygpath
|
# We build the pattern for arguments to be converted via cygpath
|
||||||
|
|
22
gradlew.bat
vendored
22
gradlew.bat
vendored
|
@ -40,7 +40,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome
|
||||||
|
|
||||||
set JAVA_EXE=java.exe
|
set JAVA_EXE=java.exe
|
||||||
%JAVA_EXE% -version >NUL 2>&1
|
%JAVA_EXE% -version >NUL 2>&1
|
||||||
if "%ERRORLEVEL%" == "0" goto init
|
if "%ERRORLEVEL%" == "0" goto execute
|
||||||
|
|
||||||
echo.
|
echo.
|
||||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||||
|
@ -54,7 +54,7 @@ goto fail
|
||||||
set JAVA_HOME=%JAVA_HOME:"=%
|
set JAVA_HOME=%JAVA_HOME:"=%
|
||||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||||
|
|
||||||
if exist "%JAVA_EXE%" goto init
|
if exist "%JAVA_EXE%" goto execute
|
||||||
|
|
||||||
echo.
|
echo.
|
||||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
||||||
|
@ -64,28 +64,14 @@ echo location of your Java installation.
|
||||||
|
|
||||||
goto fail
|
goto fail
|
||||||
|
|
||||||
:init
|
|
||||||
@rem Get command-line arguments, handling Windows variants
|
|
||||||
|
|
||||||
if not "%OS%" == "Windows_NT" goto win9xME_args
|
|
||||||
|
|
||||||
:win9xME_args
|
|
||||||
@rem Slurp the command line arguments.
|
|
||||||
set CMD_LINE_ARGS=
|
|
||||||
set _SKIP=2
|
|
||||||
|
|
||||||
:win9xME_args_slurp
|
|
||||||
if "x%~1" == "x" goto execute
|
|
||||||
|
|
||||||
set CMD_LINE_ARGS=%*
|
|
||||||
|
|
||||||
:execute
|
:execute
|
||||||
@rem Setup the command line
|
@rem Setup the command line
|
||||||
|
|
||||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||||
|
|
||||||
|
|
||||||
@rem Execute Gradle
|
@rem Execute Gradle
|
||||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
|
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
|
||||||
|
|
||||||
:end
|
:end
|
||||||
@rem End local scope for the variables with windows NT shell
|
@rem End local scope for the variables with windows NT shell
|
||||||
|
|
Loading…
Reference in a new issue