美文网首页
用Gradle打一个可执行的Jar包

用Gradle打一个可执行的Jar包

作者: 科学Jia | 来源:发表于2017-11-14 16:49 被阅读795次

在千山万水人海相遇,然后虎口脱险

最近一个项目,获取token的方式非常奇葩,需要通过HtmlUnit模拟用户登录才行,于是,自己写了一个定时器,每隔4个小时去模拟登录获取token。于是,问题来了,怎么把这个定时器跑起来,思来想去,决定打一个可执行的Jar包,以下步骤都是亲测有效,如果有跟我一样困惑的小白,可以放心借鉴。

步骤1:创建一个Main函数

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class GettingToken {
    public static void main(String[] args) {
        Runnable runnable = () ->ConvertTimeFormat.getTokenCT();
        ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
        System.out.println("====================================================================");
        // 第二个参数为首次执行的延时时间,第三个参数为定时执行的间隔时间
        service.scheduleAtFixedRate(runnable, 0, 14400, TimeUnit.SECONDS);
    }
}

其中ConvertTimeFormat.getTokenCT()是实现HtmlUnit爬虫的功能,有意思的是,在new Runnable一个实例时候,IDEA提示用lambda函数,于是出现了这样简洁的代码风格,lambda是来源于函数式编程的一个概念, JDK8以后才有这个特性。

Runnable runnable = () ->ConvertTimeFormat.getTokenCT();

重点来了,下面就是打可执行Jar包的gradle配置

步骤2:配置build.gradle.

group 'ConvertTime'
version '1.0-SNAPSHOT'

apply plugin: 'application'

sourceCompatibility = 1.8
mainClassName = 'GettingToken'
repositories {
    mavenCentral()
}

jar {
    manifest {
        attributes 'Main-Class': 'GettingToken'
    }
    from {
        configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
    }
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    compile group: 'com.alibaba', name: 'fastjson', version: '1.2.38'
    // https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient
    compile group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.2'
    compile('net.sourceforge.htmlunit:htmlunit:2.27')

}

划下重点

apply plugin: 'application'

打包所有依赖包到这个Jar包,并指定manifest文件里的Main-Class,在我的项目里Main-Class是GettingToken(见步骤1的Main代码)

jar {
    manifest {
        attributes 'Main-Class': 'GettingToken'
    }
    from {
        configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
    }
}

步骤3:Alt+F12,进入IDEA的命令终端,然后输入命令: gradle build。

在build/libs文件下,找到build成功的可执行的Jar包。


运行Gradle build命令

步骤4: 运行该可执行文件:Java -jar ***.jar

运行可执行jar

大功告成,Get!!!

相关文章

网友评论

      本文标题:用Gradle打一个可执行的Jar包

      本文链接:https://www.haomeiwen.com/subject/midfvxtx.html