बेशक ऊपर दिए गए जवाब सभी काम करते हैं, लेकिन फिर भी मैं कुछ का उपयोग करना चाहूंगा
gradle run path1 path2
अच्छी तरह से यह नहीं किया जा सकता है, लेकिन अगर हम कर सकते हैं:
gralde run --- path1 path2
यदि आपको लगता है कि यह अधिक सुरुचिपूर्ण है, तो आप इसे कर सकते हैं, चाल कमांड लाइन को संसाधित करने और इसे करने से पहले इसे संशोधित करना है, यह init स्क्रिप्ट का उपयोग करके किया जा सकता है
नीचे init स्क्रिप्ट:
- कमांड लाइन को प्रोसेस करें और '---' के बाद --- और अन्य सभी तर्कों को हटा दें।
- Gradle.ext में प्रॉपर्टी 'appArgs' जोड़ें
तो अपने रन टास्क (या JavaExec, Exec) में आप कर सकते हैं:
if (project.gradle.hasProperty("appArgs")) {
List<String> appArgs = project.gradle.appArgs;
args appArgs
}
Init स्क्रिप्ट है:
import org.gradle.api.invocation.Gradle
Gradle aGradle = gradle
StartParameter startParameter = aGradle.startParameter
List tasks = startParameter.getTaskRequests();
List<String> appArgs = new ArrayList<>()
tasks.forEach {
List<String> args = it.getArgs();
Iterator<String> argsI = args.iterator();
while (argsI.hasNext()) {
String arg = argsI.next();
// remove '---' and all that follow
if (arg == "---") {
argsI.remove();
while (argsI.hasNext()) {
arg = argsI.next();
// and add it to appArgs
appArgs.add(arg);
argsI.remove();
}
}
}
}
aGradle.ext.appArgs = appArgs
सीमाएं:
- मुझे '---' का उपयोग करने के लिए मजबूर किया गया था और '-' नहीं
- आपको कुछ वैश्विक init स्क्रिप्ट को जोड़ना होगा
यदि आपको वैश्विक init स्क्रिप्ट पसंद नहीं है, तो आप इसे कमांड लाइन में निर्दिष्ट कर सकते हैं
gradle -I init.gradle run --- f:/temp/x.xml
या बेहतर रूप से अपने शेल में एक उपनाम जोड़ें:
gradleapp run --- f:/temp/x.xml