On Oct 16, 2009, at 4:08 PM, Steven Devijver wrote:

Hey,

I have this configuration:

                dependencies {
                        moduleJars project('java14')
                        moduleJars project('java15')
                }
                
                task moduleJar(type: Jar) {
                        destinationDir = file('build/jar_for_module')
                        baseName = project.name
                        dependsOn configurations.moduleJars.buildDependencies
                }

The java15 project depends on the java14 project. However, when I run the moduleJar task the dependency of the java15 project on the java14 project seems to be somehow forgotten:

C:\dev1\spring-framework-2.5.6.SEC01>gradle -s clean build upload | more
:modules:spring-beans:java14:clean
:modules:spring-beans:java15:clean
:modules:spring-core:java14:clean
:modules:spring-core:java15:clean
:modules:spring-core:java14:compileJava
:modules:spring-core:java14:processResources
:modules:spring-core:java14:classes
:modules:spring-core:java14:jar
:modules:spring-core:java15:compileJava
C:\dev1\spring-framework-2.5.6.SEC01\tiger\src\org\springframework \core\annotati
on\AnnotationAwareOrderComparator.java:19: cannot find symbol
symbol  : class OrderComparator
location: package org.springframework.core
import org.springframework.core.OrderComparator;
                               ^

Is this as expected? I found I had to let the moduleJar task depend on the build dependencies of the specific configuration, otherwise the jar file would be empty and the java14 and java15 project would no be built.

This is expected (so far). We distinguish between external dependencies and buildable dependencies (e.g projects). Asking a configuration for its files will not automatically trigger a build of those dependencies (because this is not always what you want). Therefore you need to dependOn buildDependencies if you want want to access the files of a configuration with buildable dependencies.

But since 0.8 we have an autowiring for those two steps. Most of the gradle build in tasks make use of this.

task moduleJar(type: Jar) {
        from configurations.moduleJars
}

will make this task automatically dependent on the moduleJars.buildDependencies. There is one thing to notice. If nothing else is added to the jar, you get the message that the jar gets skipped because no files are included. But in fact the archive gets properly created. We will fix this confusing warnings soon.

Does this solve all your issues with this?

- Hans

--
Hans Dockter
Gradle Project Manager
http://www.gradle.org

Reply via email to