apply plugin: 'java' apply plugin: 'application' apply plugin: 'eclipse' sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 mainClassName = 'org.asamk.signal.Main' version = '0.7.4' compileJava.options.encoding = 'UTF-8' repositories { mavenLocal() mavenCentral() } dependencies { implementation 'com.github.turasa:signal-service-java:2.15.3_unofficial_17' implementation 'org.bouncycastle:bcprov-jdk15on:1.68' implementation 'net.sourceforge.argparse4j:argparse4j:0.8.1' implementation 'com.github.hypfvieh:dbus-java:3.2.4' implementation 'org.slf4j:slf4j-simple:1.7.30' } jar { manifest { attributes( 'Implementation-Title': project.name, 'Implementation-Version': project.version, 'Main-Class': project.mainClassName, ) } } run { if (project.hasProperty("appArgs")) { // allow passing command-line arguments to the main application e.g.: // $ gradle run -PappArgs="['-u', '+...', 'daemon', '--json']" args Eval.me(appArgs) } } // Find any 3rd party libraries which have released new versions // to the central Maven repo since we last upgraded. task checkLibVersions { doLast { def checked = [:] allprojects { configurations.each { configuration -> configuration.allDependencies.each { dependency -> def version = dependency.version if (!checked[dependency]) { def group = dependency.group def path = group.replace('.', '/') def name = dependency.name def url = "https://repo1.maven.org/maven2/$path/$name/maven-metadata.xml" try { def metadata = new XmlSlurper().parseText(url.toURL().text) def newest = metadata.versioning.latest; if ("$version" != "$newest") { println "UPGRADE {\"group\": \"$group\", \"name\": \"$name\", \"current\": \"$version\", \"latest\": \"$newest\"}" } } catch (FileNotFoundException e) { logger.debug "Unable to download $url: $e.message" } catch (org.xml.sax.SAXParseException e) { logger.debug "Unable to parse $url: $e.message" } checked[dependency] = true } } } } } } task assembleNativeImage { dependsOn("assemble") doLast { def graalVMHome = System.getenv("GRAALVM_HOME") if (!graalVMHome) { throw new GradleException('Required GRAALVM_HOME environment variable not set.') } def nativeBinaryOutputPath = "$buildDir/native-image" def nativeBinaryName = "signal-cli" mkdir nativeBinaryOutputPath exec { workingDir "." commandLine "$graalVMHome/bin/native-image", "-H:Path=$nativeBinaryOutputPath", "-H:Name=$nativeBinaryName", "-H:JNIConfigurationFiles=graalvm-config-dir/jni-config.json", "-H:DynamicProxyConfigurationFiles=graalvm-config-dir/proxy-config.json", "-H:ResourceConfigurationFiles=graalvm-config-dir/resource-config.json", "-H:ReflectionConfigurationFiles=graalvm-config-dir/reflect-config.json", "--no-fallback", "--allow-incomplete-classpath", "--report-unsupported-elements-at-runtime", "--enable-url-protocols=http,https", "--enable-https", "--enable-all-security-services", "-cp", sourceSets.main.runtimeClasspath.asPath, project.mainClassName } } }