2011-11-02 12 views
7

başlatırken ben değirmen Gradle web uygulama projesinin temel çalışma var Gradle sınıf yolu çalışma zamanını Dışlama ve ok çalışır ama Gradle en çalışma zamanı sınıf yolu web uygulamalarıyla çakışmaması potansiyeline sahip iskelesi biri dahil edildiğini fark . O gradle altındaJettyRun

Bildirim logback biraz daha eski bir sürümünü kullanıyor ve bu SL4J o sınıf yolunda birçok bağlanmayı bulduğunu uyarıyor.

: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. 

jettyRun görev çalıştıran dahil edilmesini gradle çalışma zamanı sınıfyolunu dışlamak için bir yolu var mı? Gradle'ın en son 1.0 kilometre taşı 5 sürümünü kullanıyorum.

Ant'deki javac görevinde 'includeAntRuntime' satırları boyunca bir şey arıyorum.

http://ant.apache.org/manual/Tasks/javac.html

includeAntRuntime sınıf yolunda Ant çalışma zamanı kitaplıkları dahil etmek ister; build.sysclasspath ayarlanmadıkça, varsayılan değer evet'tir. Bunu genellikle false olarak ayarlamak en iyisidir, bu nedenle betiğin davranışı, çalıştığı ortama duyarlı değildir.

sadelestirilmis build.gradle:

manual for jettyRun görev açıklandığı gibi
apply plugin: 'groovy' 
apply plugin: 'war' 
apply plugin: 'jetty' 

jettyRun { 
    contextPath = '' 
} 

cevap

2

, bu project.sourceSets.main.runtimeClasspath ayarlı varsayılan olarak bir classpath özelliğine sahiptir. Sadece kendi seçtikleri sınıf için bu özelliği ayarlayabilirsiniz:

configurations{ 
    myJettyRuntime 
} 

dependencies{ 
    myJettyRuntime "group:name:version" 
    ... 
} 

jettyRun{ 
    classpath = configurations.myJettyRuntime 
} 

alternatif sırasıyla -= ve += operatörlerini kullanarak, bu sınıfyolundan gereksiz veya çakışan bağımlılıkları ekleyebilir veya çıkarabilirsiniz.

jettyRun{ 
    classpath -= configurations.myExcludedConf 
} 
+0

Teşekkürler bu iyi bir fikir ama eğer bu işlevsellikte oluşturulduysa daha iyi olurdu, böylece hangi şeylerin dışarıda bırakılması gerektiğini belirlemem gerekmiyor. Önereceğin şeyin işe yaramayacağına ikna olmadım çünkü belgeler bu belgenin katkısı olduğunu ima ediyor. Gradle sınıf yolu, sürüş için gelebilir gibi görünüyor. Gradle sınıf yolunun, kapsayıcıyı başlatmak için iskelet eklentisi tarafından neden gerekli olduğunun iyi bir nedeni var mı? –

+0

Başarıyla '- = 'on' sourceSet.main.compileClasspath' kullandım, bu yüzden aynı şekilde jetty classpath için çalışmalı. Gradle'ın neden ve nedenini kendi sınıf yolunu içerdiğini bilmiyorum. Elkitabı, varsayılan olarak sınıf yolunun uygulamanızın sınıf yolunu ve notu olmayan "project.sourceSets.main.runtimeClasspath" olarak ayarlandığını önerir. En son gradle sürümü ile sorun devam ederse, o zaman bir hata raporunu göndermenizi önerebilirim. – rodion