Reference Application release process needs to be fixed

As part of the last OpenMRS 2.3 release, we have released emr-api:1.11.1 with the referenceapplication:2.3-SNAPSHOT dependency. As a result emr-api:1.11.1 cannot be used as a dependency in any module, because it requires at build time referenceapplication:2.3-SNAPSHOT, which no longer exists. The issue is we couldn’t have released emr-api:1.11.1 with the referenceapplication:2.2 dependency, because it needed some dependencies declared in referenceapplication:2.3-SNAPSHOT. At the same time referenceapplicatoin:2.3-SNAPSHOT could not have been released before emr-api:1.11.1 was released. We have pretty much the same issue in all our modules importing the referenceapplication pom.

We need to change how we release the Reference Application. First we need to release a pom that we import in all Reference Application modules (let’s call it the distro pom), next we release all modules and finally the distro (zip).

It means that the distro pom would be released with versions of modules that have not been released yet, but it is “ok”, since it is just a pom declaration. The distro pom would also have to be released independently from the project that assembles the distro zip, which would be the actual release of the Reference Application. It’s not ideal so I am hoping someone has a better idea :smile:

In theory, no module should really be having a strong dependency on the reference application module since it is more like the glue that brings together everything to form the ref app distro. So emrapi needs to be fixed to have a weak dependency on RA module

2 Likes

I’m not sure what you mean by the weak dependency. I don’t know any mechanism in maven for that.

We import the reference application distro pom in modules included in the distro to manage dependency versions from one place and be able to test if they build and run correctly against the same set of dependencies.

I mean no module should have RA module as a dependency in its pom file, i guess my other question is why does emrapi depend on the RA module?

It’s not the RA module dependency rather the RA distro dependency. Once again see

That was intentional and that should be the only snapshot version allowed when releasing a module that pulls it’s dependencies from the distro