On Wed, Apr 22, 2009 at 4:57 PM, Hans Dockter <[email protected]> wrote:
>
> On Apr 18, 2009, at 12:45 PM, Jeppe Nejsum Madsen wrote:
>
>>
>>
>> On Sat, Apr 18, 2009 at 12:03 PM, Hans Dockter <[email protected]> wrote:
>>
>> On Apr 18, 2009, at 11:24 AM, Jeppe Nejsum Madsen wrote:
>>
>> Hi,
>>
>> I'm new to the world of dependency management, so the following might be 
>> obvious, but I couldn't figure out how to do it.
>>
>> I need to have some tests that depend on jetty, so I add this to 
>> build.gradle:
>>
>> addMavenRepo()
>> testCompile  'org.mortbay.jetty:jetty:6.1.6',
>>
>> But compilation fails with
>> error: error while loading Server, class file 
>> 'C:\Users\jnm\.gradle\cache\org.mortbay.jetty\jetty\jars\jetty-6.1.
>> 6.jar(org/mortbay/jetty/Server.class)' is broken
>> (class org.mortbay.util.Attributes not found.)
>>
>> Looking at 
>> http://repo2.maven.org/maven2/org/mortbay/jetty/jetty/6.1.6/jetty-6.1.6.pom,
>> I can see jetty depends on jetty-util, and adding this to build.gradle fixes 
>> the build:
>>
>> testCompile 'org.mortbay.jetty:jetty-util:6.1.6'
>>
>> But I thought the whole purpose of dependency management was to avoid adding 
>> all the transitive dependencies manally? I'm complete wrong on this or is 
>> there another explanation for what I'm seeing?
>>
>> There is another explanation. One important aspect of dependency management 
>> is to make it expressive what are your first level dependencies and what are 
>> transitive dependencies. In the example above jetty-util is a transitive 
>> dependency of jetty but also a first level dependency of your project. The 
>> Gradle default is to force you to express explicitly your first level 
>> dependencies (see also UG 17.1.2: 
>> http://gradle.org/userguide/latest/dependency_management.html). We do this 
>> by letting the compile and testCompile configuration return only the first 
>> level dependencies (in contrast to testRuntime for example). To let Gradle 
>> use also the transitive dependencies for compile simply declare:
>>
>> dependencies {
>>  testCompile.transitive = true
>>  ...
>> }
>>
>> Thanks for the quick response! I'm still not sure why jetty-util is a first 
>> level dependency of my project. I don't reference anything from it, only 
>> indirectly via the Server class found in jetty. Not sure if this is related 
>> to the fact that I'm' using the scala plugin  to build. The pom.xml for my 
>> project only references jetty, not jetty-util so maven seems to be able to 
>> figure it out, but maybe it's actually the maven-scala plugin that does 
>> things differently?
>
> Thanks for the feedback. Could you file a Jira with this use case?

Done. http://jira.codehaus.org/browse/GRADLE-461


/Jeppe

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to