« Return to Thread: Publishing a second artifact

Re: Publishing a second artifact

by hdockter :: Rate this Message:

Reply to Author | View in Thread


On Jun 16, 2009, at 11:40 AM, Donal Mc Namee wrote:

> I'm having difficulty publishing an artifact to my local Ivy  
> repository
> with "gradle uploadArchives".
>
> I have one project called 'ias_ta_common' that creates 2 Jars
> ('ias_ta_common.jar', and 'ias_ta_common_service_facade.jar')
>
> Calling "gradle uploadArchives" will upload my 'ias_ta_common.jar' as
> expected but I can't seem to find a way for it to publish the extra  
> Jar.
>
>
> Looking at the documentation under "Artifact management" it would  
> appear
> that assigning the artifact to the 'archives' configuration should be
> enough.
>
> Can anyone see what I'm doing wrong?. My build.gradle is as follows:
>
> --------------------------------->8----------------------------------
> usePlugin 'java'
>
> srcRootName="sources"
> srcDirNames = ['ie']
>
> group = 'vhi'
> version = '1.0'
>
> repositories{
>  add(new org.apache.ivy.plugins.resolver.FileSystemResolver()) {
>    name = 'ivyLocalRepository'
>    addIvyPattern
> "C:/apps/ivy-local-repository/[organisation]/[module]/[revision]/
> ivys/iv
> y.xml"
>    addArtifactPattern
> "C:/apps/ivy-local-repository/[organisation]/[module]/[revision]/
> [ext]s/
> [artifact].[ext]"
>    descriptor = 'optional'
>    checkmodified = true
>  }
> }
>
> dependencies {
>  compile group: 'commons-collections', name: 'commons-collections',
> version: '3.2'
> }
>
> task serviceFacade(type: Jar, dependsOn: compile){
>  configuration = configurations.archives
>  ant.jar(destfile:
> "$buildDir/libs/ias_ta_common_service_facade-${version}.jar") {
>    fileset(dir: "$classesDir") {
>      include(name: "ie/vhi/ias/ta/common/services/facade/**")
>    }
>  }
> }

The problem lies here. You are creating an archive with Ant in the  
configuration closure of a Jar task. In fact this archive won't  
contain anything. At least not after a clean. As this is executed  
before any Gradle task is executed. And you don't configure the actual  
serviceFacade task to produce the archive. Instead you can do:

task serviceFacade(type: Jar, dependsOn: compile) {
    baseName = 'ias_ta_common_service_facade'
    fileSet(dir: classesDir) {
       include("ie/vhi/ias/ta/common/services/facade/**")
    }
}

I haven't tried it out but it should work.

See also section 15.12 of the UG: http://gradle.org/0.6.1/docs/userguide/java_plugin.html#N112D5

>
> artifacts {
>  archives serviceFacade
> }
>
> uploadArchives {
>  uploadDescriptor = true
>  repositories{
>      add project.repositories.ivyLocalRepository
>    }
> }

- Hans

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


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

    http://xircles.codehaus.org/manage_email


 « Return to Thread: Publishing a second artifact