Gradle 实战 - 启动main函数-ApiHug准备-工具篇-012

  🤗 ApiHug × {Postman|Swagger|Api...} = 快↑ 准√ 省↓

  1. GitHub - apihug/apihug.com: All abou the Apihug   
  2. apihug.com: 有爱,有温度,有质量,有信任
  3. ApiHug - API design Copilot - IntelliJ IDEs Plugin | Marketplace

ApiHug 整个工具链基于 Gradle, 使用 ApiHug 准备工作最先需要学习的就是 gradle. 工欲善其事,必先利其器

在 gradle 直接运行 java main 函数, 犹如我们直接运行 gradle bootRun, 整个教程简单看下 gradle 如何直接运行 main 函数。

gradle 有很多种方式运行, 下面我们具体一一分析。

#项目结构

public class MainClass {public static void main(String[] args) {System.out.println("Goodbye cruel world ...");}
}

#Application 插件

Application 插件是 gradle 核心插件之一, 也是我们熟悉的 java 插件隐式引入的插件。

  1. The Application Pluginopen in new window
  2. Building Java Applications Sampleopen in new window

配置如下:


apply plugin: "application"description = "Java MainClass execution examples"ext {javaMainClass = "com.dearxue.gradle.exec.MainClass"
}application {mainClassName = javaMainClass
}

application 插件自动引入了 run 任务:

Application tasks
-----------------
run - Runs this project as a JVM application

运行结果:


.\gradlew.bat  java-exec:run > Task :java-exec:run
Goodbye cruel world ...

#JavaExec

JavaExec 文档open in new window, JavaExec 来启动java 程序。

  1. main 类
  2. class path

task runWithJavaExec(type: JavaExec) {group = "Execution"description = "Run the main class with JavaExecTask"classpath = sourceSets.main.runtimeClasspathmainClass = javaMainClass
}

运行结果:

 .\gradlew.bat  java-exec:runWithJavaExec> Task :java-exec:runWithJavaExec
Goodbye cruel world ...

#Exec

Exec 文档open in new window, Exec 可以执行任何命令行:

task stopTomcat(type:Exec) {workingDir '../tomcat/bin'//on windows:commandLine 'cmd', '/c', 'stop.bat'//on linuxcommandLine './stop.sh'//store the output instead of printing to the console:standardOutput = new ByteArrayOutputStream()//extension method stopTomcat.output() can be used to obtain the output:ext.output = {return standardOutput.toString()}
}

我们的例子:

  1. 依赖 build 任务
  2. 运行时 class path 依赖
  3. main 函数

task runWithExec(type: Exec) {dependsOn buildgroup = "Execution"description = "Run the main class with ExecTask"commandLine "java", "-classpath", sourceSets.main.runtimeClasspath.getAsPath(), javaMainClass
}

效果一样:

 .\gradlew.bat  java-exec:runWithExec    > Task :java-exec:runWithExec
Goodbye cruel world ...

#Exec 输出 jar 包

task runWithExecJarOnClassPath(type: Exec) {dependsOn jargroup = "Execution"description = "Run the mainClass from the output jar in classpath with ExecTask"commandLine "java", "-classpath", jar.archiveFile.get(), javaMainClass
}

效果一样:

.\gradlew.bat  java-exec:runWithExecJarOnClassPath> Task :java-exec:runWithExecJarOnClassPath
Goodbye cruel world ...

#Exec 独立打包

jar {manifest {attributes("Main-Class": javaMainClass)}
}task runWithExecJarExecutable(type: Exec) {dependsOn jargroup = "Execution"description = "Run the output executable jar with ExecTask"commandLine "java", "-jar", jar.archiveFile.get()
}

运行结果:

.\gradlew.bat  java-exec:runWithExecJarExecutable > Task :java-exec:runWithExecJarExecutable
Goodbye cruel world ...

#结论

Application 插件提供了最小配置; JavaExec 任务让我们保持最少依赖。

最后的 Exec 任务可以让我们灵活的组合应用,异常的强大方便。

项目地址 java-exec 例子

api-hug-contact

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/814877.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【ELK】ELK企业级日志分析系统

搜集日志;日志处理器;索引平台;提供视图化界面;客户端登录 日志收集者:负责监控微服务的日志,并记录 日志存储者:接收日志,写入 日志harbor:负责去连接多个日志收集者&am…

AcWing 795. 前缀和——算法基础课题解

AcWing 795. 前缀和 题目描述 输入一个长度为 n 的整数序列。 接下来再输入 m 个询问,每个询问输入一对 l,r,。 对于每个询问,输出原序列中从第 l 个数到第 r 个数的和。 输入格式 第一行包含两个整数 n 和 m。 第二行包含 n 个整数,表…

PCL 高斯滤波(C++详细过程版)

目录 一、概述二、代码实现三、结果展示1、滤波前2、滤波后3、对比PCL 高斯滤波(C++详细过程版)由CSDN点云侠原创,爬虫自重。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、概述 高斯滤波在PCL里有现成的调用函数,具体算法原理和实现代码见:

2路音频解码器JR-AD201

音频解码器 详细介绍 JR-AD201 2路音频解码器,支持RF/ASI/IP输入,支持DRA/AC3/EAC3/AAC/MPEG等音频,输出:2路模拟立体声,2路AES/EBU。 产品特点 支持多种输入方式RF/IP/ASI 接口丰富,AES/EBU/模拟立体声/A…

CSS盒模型(详讲)

目录 概述: 内容区(content): 内边距(paddingj): 前言: 设置内边距: 边框(border): 前言: 示例: 外边…

Android开发——布局

LinearLayout RelativeLayout 所谓父子容器,就是嵌套容器时存在的关系。 根据兄弟容器定位需要传入兄弟的id。 通用属性 FrameLayout (覆盖布局) TableLayout (表格) GridLayout (网格) 子控件属性

【C++学习】深入理解C++异常处理机制:异常类型,捕获和处理策略

文章目录 ♫一.异常的提出♫二.异常的概念♫三.异常的使用♫3.1 异常的抛出和捕获♫3.2.异常的重新抛出♫3.3异常安全♫3.4 异常规范 ♫4.自定义异常体系♫5.C标准库的异常体系♫6.异常的优缺点 ♫一.异常的提出 之前: C语言传统的处理错误的方式与带来的弊端&…

win10清华源按装OPENCV和其他软件

今天按装opencv卡卡的,老掉线,想起了以前在树莓派用清华源安装opencv的时候的场景,那速度,咻咻咻的,苏帕快,于是我就果断放弃现在的,加上清华源的连接,这速度,超级流畅。…

Spring(三)

1. Spring单例Bean是不是线程安全的? Spring单例Bean默认并不是线程安全的。由于多个线程可能访问同一份Bean实例,当Bean的内部包含了可变状态(mutable state)即有可修改的成员变量时,就可能出现线程安全问题。Spring容器不会自动…

基于SpringBoot的“线上教学平台”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“线上教学平台”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 线上教学平台结构图 管理员登录界面图 学员管理界…

使用formio和react实现在线表单设计

formiojs 是一个开源的在线表单设计工具,今天看看怎样在 react js 中使用 formiojs。 首先创建一个react工程 npx create-react-app my-react-formio-app安装依赖 cd my-react-formio-app npm install formio/react npm install formio/js另外,考虑样…

解决moviepy保存的视频画质不清晰问题

参考: https://blog.csdn.net/mhack5200/article/details/128666918 https://www.cnblogs.com/LaoYuanPython/p/13643497.html moviepy 函数库很坑,默认值比较低,要提高保存图像的清晰度,提高bitrate就好,这点指定 40…

MyBatis框架使用指南

在Java开发中,数据库操作是常见且关键的任务。为了简化这一任务,我们通常会使用ORM(对象关系映射)框架,其中MyBatis就是一款非常优秀的选择。MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及…

通信算法之205 : MSK调制解调

转载: MSK(Minimum Shift Keying): MSK调制出现在上世纪六七十年代,因其频率间隔小、恒包络、相位连续、主瓣窄等特性,它在GSM等系统中得到了应用。 随着功放技术的发展及抗衰落方法的不断出现&#xff0c…

UG NX二次开发(C#)-PMI-获取PMI的尺寸数据(二)

文章目录 1、前言2、在UG NX中创建一个带有PMI的三维模型3、查找PMI的数据结构3.1 PMI数据结构3.2 Dimension的数据结构3.3 获取所有的尺寸3.4 完整的代码3.5 测试结果1、前言 在前面写的一个博客中UG NX二次开发(C#)-PMI-获取PMI尺寸数据中介绍了再NX2007中获取尺寸数据的例子…

深入理解JavaScript - JavaScript中call、apply、bind方法

一、call() / apply() JavaScript中的函数是对象,与其他JavaScript对象一样,JavaScript函数也有方法。其中有两个自带的方法 – call和apply,可以利用这两个方法来间接调用某个函数。 通过一个简单的例子体会一下call和apply的用法: funct…

嵌入式学习54-ARM3

S3c2440中断控制器 内部外设: DMA :(直接内存存取) Direct Memor…

课时94:脚本自动化_脚本信号_信号基础

2.1.1 信号基础 这一节,我们从 基础知识、简单实践、小结 三个方面来学习。 基础知识 简介 当我们在构建一些更高级的脚本的时候,就会涉及到如何在linux系统上来更好的运行和控制它们,到目前为止,我们运行脚本的方式都是以实时…

基于docker的开发者集成环境

docker-compose一键部署开发者环境。 常见的中间件:nginx, mysql, redis, mongo, rabbitmq, nacos, rocketmq, zookeeper等。 GIthub项目地址 1. 下载项目:git clone https://github.com/xhga/docker-develop-env.git 2. 进入文件夹:cd d…

服务器测试之intel E8102CQDA2

这个卡是个双口100G双芯片的卡,QSFP28 单口速率100G,双口200G 1.BIOS下pcie带宽设置 服务器BIOS下支持设置PCIE link width 设置x8x8,否则只能显示一个网口,如下图 E810-2CQDA2需要BIOS下设置该卡槽位pcie slot link width 设置x8…