Gradle 实战 - 命令行传递-ApiHug准备-工具篇-013

  🤗 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. 工欲善其事,必先利其器

命令行参数是动态控制查询运行时 profile 主要方式之一, 同理 gradle 也提供了参数传入机制。

#参数类型

两种类型的参数:

  1. 系统配置参数 -D 标志
  2. 项目配置参数 -P 标志

添加参数打印:

apply plugin: "java"
description = "Gradle Command Line Arguments examples"task propertyTypes(){doLast{if (project.hasProperty("args")) {println "Our input argument with project property ["+project.getProperty("args")+"]"}println "Our input argument with system property ["+System.getProperty("args")+"]"}
}

运行操作如下:

> .\gradlew.bat  cmd-line-args:propertyTypes -Dargs=dear -Pargs=xue   > Task :cmd-line-args:propertyTypes
Our input argument with project property [xue]
Our input argument with system property [dear]

#命令行参数传递

上面有读取参数的方式, 那么如何参数传递到我们的 main 函数?

apply plugin: "java"
apply plugin: "application"
description = "Gradle Command Line Arguments examples"ext.javaMainClass = "com.dearxue.cmd.MainClass"application {mainClassName = javaMainClass
}

java 方法如下:


public class MainClass {public static void main(String[] args) {System.out.println("JAVA - Gradle command line arguments example");for (String arg : args) {System.out.println("JAVA - Got argument [" + arg + "]");}}
}

运行如下:

> .\gradlew.bat  cmd-line-args:run --args="may the force be with you"> Task :cmd-line-args:run
JAVA - Gradle command line arguments example
JAVA -  Got argument [may]
JAVA -  Got argument [the]
JAVA -  Got argument [force]
JAVA -  Got argument [be]
JAVA -  Got argument [with]
JAVA -  Got argument [you]

Application 的 run 任务自动你参数处理了, JavaExec 就不一样, 需要写操作如下:

if (project.hasProperty("args")) {ext.cmdargs = project.getProperty("args")
} else {ext.cmdargs = "ls"
}task cmdLineJavaExec(type: JavaExec) {group = "Execution"description = "Run the main class with JavaExecTask"classpath = sourceSets.main.runtimeClasspathmainClass = javaMainClassargs cmdargs.split()
}

输出结果同样:

> .\gradlew.bat  cmd-line-args:cmdLineJavaExec  -Pargs="may the force be with you"> Task :cmd-line-args:cmdLineJavaExec
JAVA - Gradle command line arguments example
JAVA -  Got argument [may]
JAVA -  Got argument [the]
JAVA -  Got argument [force]
JAVA -  Got argument [be]
JAVA -  Got argument [with]
JAVA -  Got argument [you]

#Exec 传递参数到第三方应用

task cmdLineExec(type: Exec) {group = "Execution"description = "Run an external program with ExecTask"commandLine cmdargs.split()
}

执行:

$ ./gradlew cmdLineExec -Pargs="ls -ll"> Task :cmd-line-args:cmdLineExec
total 4
drwxr-xr-x 1 user 1049089    0 Sep  1 17:59 bin
drwxr-xr-x 1 user 1049089    0 Sep  1 18:30 build
-rw-r--r-- 1 user 1049089 1016 Sep  3 15:32 build.gradle
drwxr-xr-x 1 user 1049089    0 Sep  1 17:52 src

#结论

这个例子演示如何通过 gradle 传递 参数。

有多种方式来传递参数, 通过系统参数, 或者项目参数, 通过项目参数是个更推荐的方式。

然后 如何传递 command-line 给 Java 或者 其他第三方应用。

项目地址: cmd-line-args 项目例子

我们

api-hug-contact

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

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

相关文章

人工智能科普:人工智能的分类

人工智能的分类多种多样,根据不同的标准和应用场景,可以将其划分为多个不同的类别。以下是对人工智能分类的详细探讨。 一、按应用领域分类 1. 智能机器人:智能机器人是人工智能技术在机器人领域的应用。它们能够根据环境和任务的不同进行自…

【论文速读】| 基于大语言模型的模糊测试技术

本次分享论文为:Large Language Models Based Fuzzing Techniques: A Survey 基本信息 原文作者:Linghan Huang, Peizhou Zhao, Huaming Chen, Lei Ma 作者单位:悉尼大学;东京大学;阿尔伯塔大学 关键词:…

DP算法的精髓是什么?

概述 DP(动态规划)通过将原问题拆分成一系列子问题,并通过对子问题求解。所以,也可以把DP算法定义为“多阶段决策最优解模型”(决策树) 同时该模型也具有以下明显特征: 问题的最优解包含子问题的最优解。反过来说的…

[全网最全]2024MathorCup妈妈杯ABCD题成品论文33页+配套完整代码数据汇总

所有题目的每一小问解答(含配套代码和数据)都已经更新完毕,其中C题成品论文33页更新,B题论文更新,A题半成品论文21页完整解答代码数据。 (完整版的资料放在文末了) A题 移动通信网络中PCI规划问…

使用云服务器搭建CentOS操作系统

云服务器搭建CentOS操作系统 前言一、购买云服务器腾讯云阿里云华为云 二、使用 XShell 远程登陆到 Linux关于 Linux 桌面下载 XShell安装XShell查看 Linux 主机 ip使用 XShell 登陆主机 三、无法使用密码登陆的解决办法 前言 CentOS是一种基于Red Hat Enterprise Linux&#…

Java入门学习Day05

本篇文章主要有创建package、关系运算符、逻辑运算符、三元运算符和其对应的实例。 一、创建package 创建一个包,把我们之前或之后用到的运算符代码都放到这个package里,方面管理。 包的命名通常是公司的网站名称倒着写(com.mayin),再加上…

C语言 数据输入输出

本文 我们来说 数据的输入与输出 及数据的运算 在程序的运算工程中 往往需要输入一些数据 而程序的运算 所得到的运算结果又需要输出给用户 因此 数据的输入与输出 就显得非常重要 在C语言中 不提供专门的输入输出语句 所有的输入输出 都是通过对标准库的调用 来实现的 一般 …

电池电量监测系统设计 单片机+LabVIEW+Matlab+Protues+Keil程序

目录 前言 提供 软件 系统展示 1.放电试验及其处理 2.硬件系统原理图 3.下位机程序 4.显示 5.上位机界面 6.上位机程序 7.文档 资料下载地址:电池电量监测系统设计 单片机LabVIEWMatlabProtuesKeil程序 前言 这套系统首先使用Matlab分析获得了电压…

KL散度的非负性证明

KL散度主要是用于衡量两个分布之间的差异。KL散度的公式如下: 其中,p,q分别是两个分布,且有: 证明KL散度的非负性,即证明: 即证明: 即证明: 由吉布斯不等式可知&#…

大模型(Large Models):探索人工智能领域的新边界

🌟文章目录 🌟大模型的定义与特点🌟模型架构🌟大模型的训练策略🌟大模型的优化方法🌟大模型的应用案例 随着人工智能技术的飞速发展,大模型(Large Models)成为了引领深度…

[C++]让C++的opencv库支持写出h264格式视频

当我们写下面测试代码时候&#xff1a; #include <opencv2/opencv.hpp>int main() {cv::VideoCapture cap("E:\\car.mp4"); // 打开默认摄像头if (!cap.isOpened()) {std::cout << "读取完毕!" << std::endl;return -1;}double fps ca…

Ja-netfilter(idea激活码破解原理)分析

Ja-netfilter&#xff08;idea破解&#xff09;分析 简介 ja-netfilter是一款可以破解jetbrainsIDE系列的javaagent jar 包。 原理简介 通过javaagent创造修改字节码的时机。通过asm修改相关类&#xff0c;达到hook特定方法的作用。主要依赖power&#xff08;rsa方法hook&a…

在 Google Cloud 上轻松部署开放大语言模型

今天&#xff0c;“在 Google Cloud 上部署”功能正式上线&#xff01; 这是 Hugging Face Hub 上的一个新功能&#xff0c;让开发者可以轻松地将数千个基础模型使用 Vertex AI 或 Google Kubernetes Engine (GKE) 部署到 Google Cloud。 Model Garden (模型库) 是 Google Clou…

2024认证杯数学建模C题思路模型代码

目录 2024认证杯数学建模C题思路模型代码&#xff1a;4.11开赛后第一时间更新&#xff0c;获取见文末名片 以下为2023年认证杯C题&#xff1a; 2024年认证杯数学建模C题思路模型代码见此 2024认证杯数学建模C题思路模型代码&#xff1a;4.11开赛后第一时间更新&#xff0c;获…

JavaScript进阶6之函数式编程与ES6ESNext规范

函数式编程 柯里化currycurrycompose示例&#xff1a;简化版展开写&#xff1a; debug示例一&#xff1a;示例二&#xff1a; 模板字符串css in js方案 箭头函数问题 生成器 generator应用场景 反射 Reflect 柯里化curry compose是curry的应用 在 lodash/fp underscore ramba …

53.网络游戏逆向分析与漏洞攻防-基础数据分析筛选-逆向分析寻找消息数据解压缩过程

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果 现在的代码都是依据数据包来写的&#xff0c;如果看不懂代码&#xff0c;就说明没看懂数据包…

C# Solidworks二次开发:访问BOM表特性相关API详解

大家好&#xff0c;今天要讲的文章是和BOM表特性相关的API。 下面为要介绍的API&#xff1a; &#xff08;1&#xff09;第一个为GetConfigurationCount&#xff0c;这个API的含义为获取此BOM表可用或在此BOM表中使用的配置数&#xff0c;下面是官方的具体解释&#xff1a; …

phpMyadmin 设置显示完整内容

额外选项这里&#xff0c;默认部分内容改成完整内容 方案&#xff1a; 版本>4.5.4.1&#xff0c;修改文件&#xff1a;config.inc.php&#xff0c;添加一行代码&#xff1a; if ( !isset($_REQUEST[pftext])) $_REQUEST[pftext] F;

浮点数的表示

王道考研ppt总结&#xff1a; 二、个人理解 浮点数解决的是定点数的位数局限&#xff0c;导致表示范围有限的问题 阶码&#xff1a;由阶符和数值部分组成&#xff0c;阶符为&#xff0c;小数点向左移动&#xff0c;否则向右移动&#xff1b;数值部分&#xff0c;是底数的几次幂…

区块链媒体推广的8个成功案例解析-华媒舍

区块链领域作为一个新兴行业&#xff0c;媒体推广对于项目的成功发展起着至关重要的作用。本文将从八个成功案例中来分析区块链媒体推广的重要性和成功策略。 1. 媒体报道对于区块链项目的重要影响 媒体报道是提升区块链项目知名度和用户认可度的重要手段。对于区块链项目来说…