如何执行一个内置的胖JAR作为一个gradle任务? [英] how to execute a built fat JAR as a gradle task?

查看:194
本文介绍了如何执行一个内置的胖JAR作为一个gradle任务?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



 <$ c $ 

如何使用gradle 应用程序插件从gradle执行fat JAR: c> thufir @ doge:〜/ NetBeansProjects / selenium $
thufir @ doge:〜/ NetBeansProjects / selenium $ gradle clean fatJar; java -jar build / libs / selenium-all.jar

在23s中建立成功
4个可执行任务:4个执行
7月18日2017年7:47:49 net.bounceme.dur.web.selenium.Main主
INFO:正在运行..
1500432473386 geckodriver信息听127.0.0.1:30879
1500432475320 geckodriver :: marionette信息启动浏览器/ usr / lib / firefox / firefox with args [-marionette]
1500432488971 addons.xpi WARN附加langpack-en-ZA@firefox.mozilla.org与应用程序版本不兼容。
1500432488978 addons.xpi WARN加载项langpack-en-ZA@firefox.mozilla.org与应用程序版本不兼容。
1500432489767 addons.xpi WARN插件langpack-en-GB@firefox.mozilla.org与应用程序版本不兼容。
1500432489769 addons.xpi WARN插件langpack-en-GB@firefox.mozilla.org与应用程序版本不兼容。
^ Cthufir @ doge:〜/ NetBeansProjects / selenium $

build.gradle:

 插件{
id'com.gradle.build-scan'version'1.8'
id'java'
id'application'
}

mainClassName ='net.bounceme.dur.web.selenium.Main'

buildScan {
licenseAgreementUrl ='https://gradle.com/terms-of-service'
licenseAgree ='是'
}

存储库{
jcenter()

$ b $ jar {
manifest {
属性'Main-Class':'net.bounceme.dur.web.selenium.Main'
attributes'Class -path':'selenium-java-3.4.0.jar'
}
}

任务fatJar(类型:Jar){
baseName = project.name + {-all'
from {configurations.compile.collect {it.isDirectory()?它:zipTree(it)}}
with jar
manifest {
attributes'Implementation-Title':'Gradle Quickstart','Implementation-Version':'3.4.0'
属性'Main-Class':'net.bounceme.dur.web.selenium.Main'
}
}

依赖关系{
编译组:'org .seleniumhq.selenium',名称:'selenium-java',版本:'3.4.0'
编译组:'org.seleniumhq.selenium',名称:'selenium-server',版本:'3.4.0 '

编译组:'org.seleniumhq.selenium',名称:'selenium-firefox-driver',版本:'3.4.0'
编译组:'org.seleniumhq.selenium ',name:'selenium-chrome-driver',版本:'3.4.0'
编译组:'org.seleniumhq.selenium',名称:'selenium-ie-driver',版本:'3.4.0 '
编译组:'org.seleniumhq.selenium',名称:'selenium-safari-driver',版本:'3.4.0'
编译组:'org.sel eniumhq.selenium',名称:'selenium-edge-driver',版本:'3.4.0'

}

,条件是我想让胖JAR实际构建并且想要执行实际 JAR文件本身。在CLI中运行fatJAR的上下文



参考:

https://docs.gradle.org/current/userguide/userguide_single.html



运行基于gradle的项目构建的可执行jar文件

运行jar参数gradle



>如何在gradle中执行jar文件?

解决方案

您需要添加一个类型为 JavaExec ,它们将具有类路径con想要包含用 fatJar 和主类集建立的jar。这是一个 build.gradle 我准备好了,它显示了它应该是这样的:

  plugins {
id'java'
}

仓库{
jcenter()
mavenCentral()
}

任务fatJar(类型:Jar){
baseName = project.name +'-all'
from {configurations.compile.collect {it.isDirectory()?它:zipTree(it)}}
with jar
manifest {
属性'Main-Class':'org.Lol'
}
}

依赖关系{
编译'com.google.guava:guava:22.0'
}

任务runFatJar(类型:JavaExec){
dependsOn fatJar
classpath = fatJar.outputs.files
main ='org.Lol'
}

此处,您可以找到可运行的演示。


How would I utilize the gradle application plugin to execute the fat JAR from gradle as so:

thufir@doge:~/NetBeansProjects/selenium$ 
thufir@doge:~/NetBeansProjects/selenium$ gradle clean fatJar;java -jar build/libs/selenium-all.jar 

BUILD SUCCESSFUL in 23s
4 actionable tasks: 4 executed
Jul 18, 2017 7:47:49 PM net.bounceme.dur.web.selenium.Main main
INFO: running..
1500432473386   geckodriver INFO    Listening on 127.0.0.1:30879
1500432475320   geckodriver::marionette INFO    Starting browser /usr/lib/firefox/firefox with args ["-marionette"]
1500432488971   addons.xpi  WARN    Add-on langpack-en-ZA@firefox.mozilla.org is not compatible with application version.
1500432488978   addons.xpi  WARN    Add-on langpack-en-ZA@firefox.mozilla.org is not compatible with application version.
1500432489767   addons.xpi  WARN    Add-on langpack-en-GB@firefox.mozilla.org is not compatible with application version.
1500432489769   addons.xpi  WARN    Add-on langpack-en-GB@firefox.mozilla.org is not compatible with application version.
^Cthufir@doge:~/NetBeansProjects/selenium$ 

build.gradle:

plugins {
    id 'com.gradle.build-scan' version '1.8' 
    id 'java'
    id 'application'
}

mainClassName = 'net.bounceme.dur.web.selenium.Main'

buildScan {
    licenseAgreementUrl = 'https://gradle.com/terms-of-service'
    licenseAgree = 'yes'
}

repositories {
    jcenter()
}

jar {
    manifest {
        attributes 'Main-Class': 'net.bounceme.dur.web.selenium.Main'
        attributes 'Class-path': 'selenium-java-3.4.0.jar'
    }
}

task fatJar(type: Jar) {
    baseName = project.name + '-all'
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
    with jar
    manifest {
        attributes 'Implementation-Title': 'Gradle Quickstart', 'Implementation-Version': '3.4.0'
        attributes 'Main-Class': 'net.bounceme.dur.web.selenium.Main'
    }
}

dependencies {
     compile group: 'org.seleniumhq.selenium', name: 'selenium-java', version: '3.4.0'
     compile group: 'org.seleniumhq.selenium', name: 'selenium-server', version: '3.4.0'

    compile group: 'org.seleniumhq.selenium', name: 'selenium-firefox-driver', version: '3.4.0'
    compile group: 'org.seleniumhq.selenium', name: 'selenium-chrome-driver', version: '3.4.0'
    compile group: 'org.seleniumhq.selenium', name: 'selenium-ie-driver', version: '3.4.0'
    compile group: 'org.seleniumhq.selenium', name: 'selenium-safari-driver', version: '3.4.0'
    compile group: 'org.seleniumhq.selenium', name: 'selenium-edge-driver', version: '3.4.0'

}

with the proviso that I want the fat JAR to actually build and want to execute the actual JAR file itself. In the context of running a fatJAR from the CLI.

Reference:

https://docs.gradle.org/current/userguide/userguide_single.html

Running an executable jar file built from a gradle based project

Run jar with parameters in gradle

How to execute jar file in gradle?

解决方案

What you need is to add a task of type JavaExec that will have the classpath configured to contain the jar built with fatJar and main class set. Here's a build.gradle I prepared that shows how it should look like:

plugins {
    id 'java'
}

repositories {
    jcenter()
    mavenCentral()
}

task fatJar(type: Jar) {
    baseName = project.name + '-all'
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
    with jar
    manifest {
        attributes 'Main-Class': 'org.Lol'
    }
}

dependencies {
    compile 'com.google.guava:guava:22.0'
}

task runFatJar(type: JavaExec) {
    dependsOn fatJar
    classpath = fatJar.outputs.files
    main = 'org.Lol'
}

and here you can find the runnable demo.

这篇关于如何执行一个内置的胖JAR作为一个gradle任务?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆