Predávanie argumentov príkazového riadku v Gradle

1. Prehľad

Niekedy chceme z Gradle spustiť rôzne programy, ktoré vyžadujú vstupné parametre.

V tomto rýchlom výučbe sa dozvieme, ako odovzdávať argumenty príkazového riadku z programu Gradle.

2. Typy vstupných argumentov

Keď chceme odovzdať vstupné argumenty z CLI v Gradle, máme dve možnosti:

  • nastavenie vlastností systému pomocou -D vlajka
  • nastavenie vlastností projektu pomocou -P vlajka

Všeobecne, mali by sme používať vlastnosti projektu, pokiaľ nechceme prispôsobiť nastavenia v JVM.

Aj keď je možné uniesť vlastnosti systému, aby sme odovzdali naše vstupy, mali by sme sa tomu vyhnúť.

Pozrime sa na tieto vlastnosti v akcii. Najskôr nakonfigurujeme našu build.gradle:

apply plugin: "java" description = "Príklady argumentov príkazového riadku Gradle" úloha propertyTypes () {doLast {if (project.hasProperty ("args")) {println "Náš vstupný argument s vlastnosťou projektu [" + project.getProperty (" args ") +"] "} println" Náš vstupný argument so systémovou vlastnosťou ["+ System.getProperty (" args ") +"] "}} 

Všimnite si, že v našej úlohe ich čítame rôzne.

Robíme to preto projekt.getProperty () hodí a MissingPropertyException v prípade, že náš majetok nie je definovaný.

Na rozdiel od vlastností projektu System.getProperty () vracia a nulový hodnota v prípade, že vlastnosť nie je definovaná.

Ďalej spustíme úlohu a uvidíme jej výstup:

$ ./gradlew propertyTypes -Dargs = lorem -Pargs = ipsum> Úloha: cmd-line-args: propertyTypes Náš vstupný argument s vlastnosťou projektu [ipsum] Náš vstupný argument so systémovou vlastnosťou [lorem] 

3. Odovzdanie argumentov príkazového riadku

Doteraz sme videli, ako čítať vlastnosti. V praxi musíme tieto vlastnosti poslať ako argumenty nášmu vybranému programu.

3.1. Predávanie argumentov aplikáciám Java

V predchádzajúcom tutoriáli sme si vysvetlili, ako spustiť hlavné triedy Java z Gradle. Poďme na to nadviazať a uvidíme, ako dokážeme predložiť aj argumenty.

Najprv poďme použite aplikačný plugin v našom build.gradle:

apply plugin: "java" apply plugin: "application" description = "Príklady argumentov príkazového riadku Gradle" // predchádzajúce vyhlásenia ext.javaMain aplikácia {mainClassName = javaMainClass} 

Poďme sa teraz pozrieť na našu hlavnú triedu:

public class MainClass {public static void main (String [] args) {System.out.println ("Príklad argumentov príkazového riadku Gradle"); pre (String arg: args) {System.out.println ("Mám argument [" + arg + "]"); }}} 

Ďalej to spustíme s niekoľkými argumentmi:

$ ./gradlew: cmd-line-args: run --args = "lorem ipsum dolor"> Úloha: cmd-line-args: spustiť argumenty príkazového riadku Gradle príklad Mám argument [lorem] Mám argument [ipsum] Mám argument [dolor ]

Tu nepoužívame vlastnosti na odovzdávanie argumentov. Namiesto toho míňame –Args príznak a príslušné vstupy.

Toto je pekný obal poskytovaný aplikačným doplnkom. Avšak toto je k dispozícii iba od verzie 4.9.

Pozrime sa, ako by to vyzeralo pomocou a JavaExec úloha.

Najprv si to musíme definovať v našom build.gradle:

ext.javaMain if (project.hasProperty ("args")) {ext.cmdargs = project.getProperty ("args")} else {ext.cmdargs = ""} úloha cmdLineJavaExec (typ: JavaExec) {group = "Execution" description = "Spustiť hlavnú triedu pomocou JavaExecTask" classpath = sourceSets.main.runtimeClasspath main = javaMainClass args cmdargs.split ()} 

Pozrime sa podrobnejšie na to, čo sme urobili. Najprv sme prečítať argumenty z vlastnosti projektu.

Pretože toto obsahuje všetky argumenty ako jeden reťazec, sme potom Použi rozdeliť metóda na získanie súboru argumentov.

Ďalej my odovzdať toto pole do args majetok nášho JavaExec úloha.

Pozrime sa, čo sa stane, keď spustíme túto úlohu a odovzdáme vlastnosti projektu s -P možnosť:

$ ./gradlew cmdLineJavaExec -Pargs = "lorem ipsum dolor"> Úloha: cmd-line-args: cmdLineJavaExec argumenty príkazového riadku v Gradle príklad Mám argument [lorem] Mám argument [ipsum] Mám argument [dolor] 

3.2. Predávanie argumentov iným aplikáciám

V niektorých prípadoch možno budeme chcieť odovzdať niektoré argumenty aplikácii tretej strany od spoločnosti Gradle.

Našťastie môžeme použite všeobecnejšie Exec úloha urobiť tak:

if (project.hasProperty ("args")) {ext.cmdargs = project.getProperty ("args")} else {ext.cmdargs = "ls"} úloha cmdLineExec (typ: Exec) {group = "Execution" description = „Spustiť externý program pomocou ExecTask“ commandLine cmdargs.split ()} 

Tu, my Použi príkazový riadok vlastnosť úlohy odovzdať spustiteľný súbor spolu s akýmikoľvek argumentmi. Opäť sme rozdelili vstup na základe medzier.

Pozrime sa, ako to spustiť pre je príkaz:

$ ./gradlew cmdLineExec -Pargs = "ls -ll"> Úloha: cmd-line-args: cmdLineExec celkom 4 používatelia drwxr-xr-x 1 1049089 0 1. september 17:59 bin drwxr-xr-x 1 užívateľ 1049089 0 sep 1 18:30 build -rw-r - r-- 1 užívateľ 1049089 1016 3. september 15:32 build.gradle drwxr-xr-x 1 užívateľ 1049089 0 sep 1 17:52 src

To môže byť veľmi užitočné, ak nechceme naprogramovať spustiteľný súbor v úlohe napevno.

4. Záver

V tomto rýchlom výučbe sme videli, ako odovzdať vstupné argumenty z Gradle.

Najprv sme vysvetlili typy vlastností, ktoré môžeme použiť. Aj keď na odovzdanie vstupných argumentov môžeme použiť vlastnosti systému, mali by sme namiesto nich uprednostniť vlastnosti projektu.

Potom sme preskúmali rôzne prístupy na odovzdávanie argumentov príkazového riadku do Javy alebo externých aplikácií.

Celý kód nájdete ako obvykle na GitHub.


$config[zx-auto] not found$config[zx-overlay] not found