Distribute multiple-module library on Bintray for Java and Android developers
Before jumping into technical stuffs, I would like to share our story.
We planned to build a world-class manga(漫画) studio. Our software team firstly created a
manga module which serves as a primary library and it is written purely in Java.
After that, we utilize it to produce concrete mangas. Our first masterpiece is
Doraemon , and our partners would like to integrate it in their Android apps. So, we developed Android
doraemon module which extends
After hard working hours, our products were ready to be delivered to our partners. Because Java and Android developers use Maven repository, so we decide to release all of mangas on jCenter (one of popular Maven repository hosts). The process is described as the following diagram.
It has been a while since I published an article about Android library distribution which introduces about Maven repository and necessary steps to distribute your library using Bintray platform. We can follow these steps described in that previous article.
However, our manga studio are growing quickly, and we plan to produce 2 mangas everyday. So,we need to find out how to distribute hundreds or thousands mangas in an easier and more effortless way.
And the last Gradle configuration fits with one module release only.
For awhile, I found that there are a lot of libraries out there in the same situation.
Let’s take Retrofit library as an example, you definitely saw multiple modules involved such as
retrofit-converters. From library user view, when integrating Retrofit in our apps, we must add its core module via Gradle dependence.
Other modules are optional based on our need for specific apps.
Finally, we found our own way to achieve this goal. In the following part, I would like to introduce a simple way to distribute multiple-module library on Bintray with detailed explanation and fully source-code sample.
Please go through following steps if you would like to distribute your library.
- Grab Gradle’s files which help you to build and upload libraries on Bintray here. It is similar to Gradle files you saw in my previous article but small changes. Put them inside /jcenter/ folder as in the sample.
- We need a common configuration Gradle file I named
- For each module, let’s create its own
gradle.propertiesand declare its specific configuration details.
- In module’s
build.gradlefile, put this line at the bottom to let Gradle know to run it when you call Bintray upload task.
apply from: rootProject.file(‘release-bintray.gradle’)
- Almost done, make sure you put your Bintray account credentials inside
local.propertiesfile as following (this file is ignored by Git, not be uploaded on version control hosting).
bintray.apikey=your_api_key (i.e: adfasdf342342j34lba84a25f8c3)
- Let’s run Gradle task with one command.
- Tell other developers to integrate your new awesome library.
For full source codes, please check the sample on Github.
multi-library-bintray - A demo project to illustrate Bintray release configuration of a project which contains several…github.com
Note: The story of building world-class manga studio is just in my imagination, therefore please don’t wait for any more-than-a-stupid-sample masterpiece coming out.