On 21/05/10 12:50 AM, jerome moliere wrote:
Hi all,
I'm facing a design question regarding how to layout my project which is a set of demo bundles for an OSGi book coming soon.. Saying I've got an OSGi servicecontained in a com.foo.osgi.service.api Java package, 2 implementation bundles: both providing (export-package directive in MANIFEST.MF bundle descriptor) and giving implementation for this service in com.foo.osgi.service.impl

A client bundle would import-package (to use the directive) and may fetch the currently available implementation... From OSGi guru Peter Kriens point of view, it's a good inhabit to repeat the api classes in each of the implementation bundles

That 's where my problem starts...
i'd like to know a good Gradle wayhe api to build such project saying I've got:
OSGI-service-sample/
            + service-api
                   + src/main/java/com/foo ...
                   + build/com/foo/...

             + impl1
                    +src/main/java/com/foo/osgi/service/impl
                    + build/com/foo...

            + impl2
                    +src/main/java/com/foo/osgi/service/impl
                    + build/com/foo...
            + client-test
                    + src/main/java/com/.osgi/client
                    + build/com/foo/osgi/client/...

Compiling impl1 & impl2 require an access to api classes
Jar to be generated would contain  classes from:
com/foo/osg/iservice/.api
com/foo/osg/iservice/impl

Compiling client require access to the same  api classes

I don't know to translate this into a proper gradle build....
Multi project? Yes it seems trivial

I think multi-project is the simplest way to go, though there are some other options. You'd have a project for the API, and a project for each of the implementation bundles.

How to customize the artefact generation to include required classes in the 2 client bundles?

For each of the implementation projects, you can do something like:

evaluationDependsOn(':service-api')

jar {
    // add in classes from the service-api project
    from project(':service-api').sourceSets.main.classes
}


--
Adam Murdoch
Gradle Developer
http://www.gradle.org
CTO, Gradle Inc. - Gradle Training, Support, Consulting
http://www.gradle.biz


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

   http://xircles.codehaus.org/manage_email


Reply via email to