Developing Building Blocks with the Public Maven Repository

Version 2

    As Blackboard shifts to a more modular delivery model, with more features delivered as Building Blocks at regular intervals, the importance of having a repository of build objects and documentation has never been more important. Blackboard’s own development teams have been using an internal Maven Repository since the summer of 2012 and they have found it to greatly speed up the Building Block development process.


    Developing software with external dependencies is a tough business. Maven has made this significantly easier by developing a standard binary repository format that many modern build tools integrate easily with to provide access to many of the dependencies Blackboard Building Blocks developers might need. Maven Central, the main repository for the Maven ecosystem, contains a significant number of popular third party libraries that you may want to use in your projects.


    When developing Building Blocks, though, you will need some libraries from Blackboard Learn. In the past, to include those libraries, you needed to find the libraries on a local instance of Blackboard Learn, copy them someplace in your source tree, write custom dependency logic and build. Plus when you upgraded to a later Learn version for building, or if you wanted to build against multiple versions, things got even more complicated.


    Blackboard is happy to announce that we have a publicly accessible Maven repository that can be used to access any of the public API JARs from Learn for every release going back to 9.1 SP8. This article will show you how to integrate with the Maven repository using two popular build tools: Maven and Gradle.


    The Blackboard Maven repository is hosted at:



    When would you use the repository?


    A Building Blocks developer would use the repository whenever creating build scripts for a B2. The Maven Repository will make it easier for a developer to reference the correct versions of our public API.


    Available Libraries


    All Blackboard API libraries are part of the blackboard.platform group. Blackboard publishes these libraries:



    Artifact IDDescription
    bb-bbxythosAPIs for the content management subsystem.
    bb-cms-adminAPIs pertaining to system administration.
    bb-platformCore platform APIs. This covers the bulk of the APIs typical Building Blocks will use.
    bb-taglibsStandard tag libraries provided by the platform.
    bb-ui-webapiAPIs for Building Block developers. Many of the public tags leverage code and resources included in this project.

    As a webapi, this library must be included in your Building Blocks' WEB-INF/lib path because the platform does not provide it. This webapi includes a resources package that you must expand at the root of your Building Block.

    bb-ws-announcementWeb Service stubs and APIs for the announcements subsystem.
    bb-ws-calendarWeb Service stubs and APIs for the calendar subsystem.
    bb-ws-contentWeb Service stubs and APIs for the content subsystem.
    bb-ws-contextWeb Service stubs and APIs for the session context subsystem.
    bb-ws-courseWeb Service stubs and APIs for the course subsystem.
    bb-ws-coursemembershipWeb Service stubs and APIs for the course membership subsystem.
    bb-ws-gradebookWeb Service stubs and APIs for the gradebook subsystem.
    bb-ws-notificationdistributoroperationsWeb Service stubs and APIs for the notification subsystem integration.
    bb-ws-userWeb Service stubs and APIs for the user subsystem.
    bb-ws-utilWeb Service stubs and APIs for the some helpful utilities.
    bb-manifest-pluginXSD for validating the XML in your bb-manifest.xml file.
    bb-schema-xsdXSD for validating the XML in your schema.xml file.
    xsscoreLibrary supporting bb-bbxythos. Make sure you are using the same version of each file, and do not include in your war file.