Java 用于在生成调用中包装运行时参数的Gradle包装器

Java 用于在生成调用中包装运行时参数的Gradle包装器,java,gradle,gradlew,Java,Gradle,Gradlew,目前,我们有一个使用Gradle 2.3构建的应用程序(使用构建自包含的“胖罐子”),该应用程序使用以下构建调用进行构建: gradle clean build shadowJar 这将在build/distributions下生成一个胖JAR 要实际运行应用程序,有大量运行时参数,例如: java -jar build/distributions/myapp.jar -Dfizz=true -Dbuzz=false -Dfoo=1 -Dbar=yes -Dgizmo=405 实际上,还有几

目前,我们有一个使用Gradle 2.3构建的应用程序(使用构建自包含的“胖罐子”),该应用程序使用以下构建调用进行构建:

gradle clean build shadowJar
这将在
build/distributions
下生成一个胖JAR

要实际运行应用程序,有大量运行时参数,例如:

java -jar build/distributions/myapp.jar -Dfizz=true -Dbuzz=false -Dfoo=1 -Dbar=yes -Dgizmo=405
实际上,还有几十个其他参数。这些运行时参数是特定于环境的,并且在运行此应用程序的每台计算机上都不同,因此不能在
build.gradle
文件中的某个位置对其进行硬编码。有人向我提到,可以使用Grails包装来抽象这些运行时参数,这样我就可以运行
/gradlew run
,并将其配置为执行与上面的
java-jar
命令相同的操作


如果这是真的,这个设置会是什么样子?如果不是这样,为什么呢?

我认为你应该有一个名为ini的文件夹,在那里你可以有ini文件,比如

android.ini


在每个.ini文件中,您将定义值,并创建一个加载器,该加载器将确定需要使用的ini,加载文件,解析其内容并将其存储到设置变量中。

谢谢@Lajos Arpad(+1)-此ini将位于何处?您看到哪些文件表明存在这些INI?这是一种常见做法。我已经使用ini文件创建了几个项目,我总是对结果感到满意。现在,如果您的应用程序根据设备的不同应该有不同的用例,那么您可能需要多个设备组的ini文件,并确定加载程序中的设备类型,然后加载正确的ini文件。这是非常有用的,因为ini文件设置更改不需要更改源代码,甚至测试人员也可以进行更改,因此作为程序员,您不会对确切的值感兴趣,只会对方法感兴趣。再次感谢@Lasjos Arpad(+1),但我想您会感到困惑-这不是Android或移动设备。这只是一个使用Gradle构建的Java应用程序,它不依赖于INI文件,也不建议将其作为任何“最佳实践”使用。目前的问题是:我是否可以使用
gradlew
包装运行时参数,如果可以,如何包装(具体)。如果你能提供一个包含INI文件的解决方案,我当然会考虑,但是我需要看到整个解决方案,否则我想我们讨论的是2种不同的东西。再次感谢。为什么不将您的值,比如-Dfizz=true,放入一个.ini文件中呢?如果所有的值都在那里,并且您从ini文件加载了这些值,那么,您将拥有自己的值,您唯一的任务就是确保您的ini已被读取。您不必确保传递了运行时参数。从ini文件读取值后,可以初始化设置。我的建议是使用ini文件并将参数放在那里,而不是总是键入它们。此外,您还可以使用安装应用程序以用户友好的方式修改ini