我有磨坊Gradle Web应用程序项目的基本运行,它工作正常,但我注意到Gradle的运行时类路径正在包含在码头中,有可能与Web应用程序发生冲突。在启动JettyRun时排除Gradle类路径运行时
注意下面,gradle使用的是稍早版本的logback,SL4J警告它在类路径中找到多个绑定。
:jettyRun
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/dev/java/tools/gradle-1.0-milestone-5/lib/logback-classic-0.9.29.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/Users/kirk.rasmussen/.gradle/caches/artifacts-3/ch.qos.logback/logback-classic/fd9fe39e28f1bd54eee47f04ca040f2b/jars/logback-classic-0.9.30.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
有没有办法排除被列入gradle这个运行时类路径运行jettyRun任务时?我正在使用Gradle最新的1.0里程碑5版本。
我正在寻找类似'includeAntRuntime'的东西在Ant中的javac任务中。
http://ant.apache.org/manual/Tasks/javac.html
includeAntRuntime是否包含在类路径中的Ant运行时库;默认为yes,除非设置了build.sysclasspath。通常最好将其设置为false,以便脚本的行为对其运行的环境不敏感。
剥离下来的build.gradle:
apply plugin: 'groovy'
apply plugin: 'war'
apply plugin: 'jetty'
jettyRun {
contextPath = ''
}
谢谢,这是一个好主意,但如果这是建立在功能上,它会更好,所以我不必确定哪些东西需要排除。我不相信你的建议会起作用,因为文件暗示它是附加的。 Gradle类路径看起来可能会出现在骑行中。 为什么Jetty插件需要Gradle类路径来启动容器是否有很好的理由? –
我已经成功地在'sourceSet.main.compileClasspath'上使用' - =',所以它应该以类似于jetty classpath的方式工作。我不知道为什么,以及Gradle包含自己的类路径的原因。该手册建议,默认情况下,classpath被设置为'project.sourceSets.main.runtimeClasspath',它应该是你的应用程序的类路径,而不是gradle。如果问题仍然存在于最新的gradle版本中,那么我只能建议你提交一份bug报告。 – rodion