我正在尝试移植Codename One客户端构建,这些构建是非常自定义的ant脚本,可以使用gradle。当您在模拟器上运行Codename One应用程序时,您不会运行应用程序主类,而是运行类似:
java -classpath CodenameOneJarList com.codename1.impl.javase.Simulator nameOfTheMainClassForTheApp
要在gradle中执行此操作,我编辑了基本构建脚本:
apply plugin: 'java'
apply plugin: 'application'
mainClassName = "com.codename1.impl.javase.Simulator"
// for netbeans
ext.mainClass = 'com.codename1.impl.javase.Simulator'
然后在底部我做了这个:
run {
args 'com.mycompany.myapp.Main'
}
按预期工作,并在IDE(NetBeans)中按下运行时启动模拟器。我不确定这是否是正确的事情"虽然它可以在其他IDE中使用。
然后,当我尝试在调试器中启动时,由于我猜不到run
目标没有被调用,所以参数没有通过?
我试过这样做:
debug {
args 'com.mycompany.myapp.Main'
}
哪个明显失败了。我不确定将参数传递给调试器的位置?
这是通过gradle标准化的吗?
关于争论传递,我是否正确的方向?
"运行"声明性语法映射到?如何找到其他潜在的声明性块类型?
不幸的是,谷歌搜索运行/调试等基础知识并没有带来有用的东西。
答案 0 :(得分:1)
build.gradle中的run
部分是从您应用的application
插件添加到项目中的DSL。关于插件的Here is more information。正如您将注意到的那样,应用程序插件实际上是为了生成一个可运行的jar,分发和执行它 - 不仅仅是为了调试而且不支持它。
要从Gradle启动java进程,您可以使用JavaExec
任务以及使用args
字段的任意JVM参数,包括但不限于调试选项。
您可以执行以下操作:
task runApp(type: JavaExec) {
classpath = sourceSets.main.runtimeClasspath
main = 'package.Main' //class to run
// add debug arguments as required, for example:
args '-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8888,suspend=n'
}
运行gradle runApp
以调试模式启动应用程序,然后附加IDE。对Netbeans不够熟悉,我无法评论如何将Netbeans附加到调试java进程。