2011-06-06 62 views
0

我正在使用IntelliJ IDEA 10.0.1和Grails 1.3.7。我有一個依賴於許多日誌庫的mavenized Grails項目。Grails + Maven + JCL會一起工作嗎?

這裏的問題:
我必須使用JCL作爲日誌框架,但每個默認的Grails正在與SLF4J,並有一些默認的依賴像JCL-過SLF4J,這是由每一個Grails項目繼承。首先我排除每一個JCL-過SLF4J傳遞依賴於我的項目POM文件,並與MVN依賴驗證:樹我的聚甲醛是乾淨的任何SLF4J橋接庫。

但仍然jcl-over-slf4j仍然beeing下載到我當地的maven回購當我嘗試啓動我的grails應用程序。這在運行時明顯導致StackOverflowError,因爲jcl-over-slf4jslf4j-jcl位於類路徑中。

那麼因爲哪個聲明依賴於依賴關係仍然在下載?

由於我的pom是乾淨的,所以顯而易見的結論是Grails本身依賴於這些庫。如前所述,Grails有一些默認依賴關係,每個Grails項目都依賴於這些依賴關係。

我知道我可以排除BuildConfig.groovy文件中的繼承關係,如果我運行grails dependency-report我還可以看到這些依賴關係不再列出。

grails.project.dependency.resolution = { 
    inherits("global") { 
     excludes "jcl-over-slf4j", "jul-to-slf4j", "slf4j-log4j12" 
    } 
} 

但即使如此,該JCL-過SLF4J依賴仍然beeing下載到我的回購當我開始我的Grails應用程序!我錯過了什麼嗎?當你使用maven化的grails項目時,是否有不同的方法來排除繼承的grails依賴關係?

任何幫助,將不勝感激

謝謝! 斜線

回答

0

好吧,我想我得到了答案現在..

的問題是定義Maven的Grails的-插件內(當你使用Maven的Grails的+這是必須的)我的POM文件取決於jcl-over-slf4j因此在我通過maven啓動我的應用程序時被下載。以我目前的Maven版本(2.2.1),這是不可能的,以排除插件的依賴。關於這個問題還有一個jjira問題。 Can not exclude a dependency from a plugin

只要我刪除Maven的Grails的-插件的依賴不再被下載,但缺點我無法通過Maven來啓動應用程序了..

經驗教訓:唐不要聯合使用Maven + Grails + JCL。

注意與MVN依賴:樹只是項目的依賴列,但插件依賴是上市

希望這有任何幫助! Regards Slash

+0

** mvn dependency:resolve-plugins **可能有助於列出插件依賴項 – rlovtang 2011-06-07 15:56:23

+0

Thx for the hint!當我讓它運行時,它揭示了** grails-maven-plugin **對** jcl-over-slf4j **沒有依賴關係(至少沒有直接依賴關係)。但爲什麼它仍然在下載? – 2011-06-08 10:11:32

相關問題