On Sep 27, 2008, at 2:03 PM, Levi Hoogenberg wrote:
Hello, I have the following project layout: root/ core/ lib/ slf4j-api-1.5.2.jar src/ main/ java/ build.gradle tests/ lib/ testng-5.8-jdk15.jar src/ test/ java/ build.gradle build.gradle settings.gradle root/build.gradle contains: subprojects { usePlugin('java') dependencies { addFlatDirResolver('lib', new File(projectDir, 'lib')) } // ... } project/build.gradle looks like this: dependencies { compile(':slf4j-api:[EMAIL PROTECTED]') } And finally, tests/build.gradle looks like this: dependencies { testCompile project(':core'), ':testng:5.8:[EMAIL PROTECTED]' }According to section 14.7, the project dependency on core from tests makes sure that core's dependencies are added to the classpath of the tests project. Now I may misunderstand this, but I expected my test classes to be able to use SLF4J classes. When I run gradle testCompile inside tests however, I get compiler errors like the following:cannot find symbol symbol : class Logger location: package org.slf4j import org.slf4j.Logger; ^So I guess this is not what the user guide means when it says that dependencies of the other project are added to the classpath.
This is not a bug but a feature of Gradle. We explain this in detail in UG 12.1.2. The dependencies of the other project are added to the runtime classpath. We intentionally do never put transitive dependencies of a project or an external lib into the compile classpath of the using project. We consider it as best practices that your first level dependencies are explicitly declared. This is easy to change but we don't think it is a good idea.
- Hans -- Hans Dockter Gradle Project lead http://www.gradle.org --------------------------------------------------------------------- To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email
