Running an executable JAR from a remote maven repo

(John Cartwright) #1

Hello All,

I’m trying to create a very simple script to execute a JAR file retrieved from a remote repository, e.g. “java -jar myfile.jar”. The script below works but requires me to inspect the MANIFEST.MF to get the Main-Class, which defeats the purpose.

Can someone please help me?



apply plugin: 'java'

repositories {
    maven {
        url ''

dependencies {
    runtime "edu.ucar:toolsUI:4.6.4"

//goal is to be able to execute equivalent of "java -jar toolsUI-4.6.4.jar"
task runToolsUI(type: JavaExec) {
    main = "ucar.nc2.ui.ToolsUI"
    classpath = sourceSets.main.runtimeClasspath

(Lance Java) #2

It might work using jvmArgs (not 100% sure but worth a try)

configurations {
dependencies {
    toolsUi "edu.ucar:toolsUI:4.6.4"
task runToolsUI(type: JavaExec) {
    jvmArgs ['-jar', configurations.toolsUi.singleFile.absolutePath]

(John Cartwright) #3

Thanks for the suggestion, but it still seems to require the “main” property using the below:

jvmArgs = ['-jar', configurations.toolsUIRuntime.singleFile.absolutePath]


(Lance Java) #4

Hmm… That’s what I was worried about. Perhaps you could roll your own task using as a reference.


task runToolsUI << {
   ExecActionFactory factory = gradle.getService(ExecActionFactory)
   JavaExecAction action = factory.newJavaExecAction() 
   action.setJvmArgs ['-jar', configurations.toolsUi.singleFile.absolutePath]

*** edit ***
This aporoach won’t work as the main class requirement is coded in the base class of DefaultJavaExecAction. You may need to roll your own Exec task