serpro69 / semver.kt

Semantic versioning gradle plugin via git tags, plus a kotlin implementation of semver spec and a semantic release versioning library
MIT License
7 stars 2 forks source link

Plugin: versioning multi-module monorepo projects #17

Closed serpro69 closed 10 months ago

serpro69 commented 10 months ago

Consider this project's structure:

.
├── build.gradle.kts
├── gradle.properties
├── settings.gradle.kts
├── release                            <--- sub-module
│   ├── build
│   ├── build.gradle.kts
│   └── src
├── semantic-versioning          <--- sub-module
│   ├── build
│   ├── build.gradle.kts
│   └── src
└── spec                               <--- sub-module
    ├── build
    ├── build.gradle.kts
    └── src

All three sub-modules publish their own artifacts. Say we're now on version 0.6.0, and at version 0.7.0 only release and semantic-versioning modules have changed, yet we are going to create a release version for all 3 sub-modules. In addition, the spec isn't going to change often at all, so why would we create new versions for it every time we update one of the other two?

Some questions that need to be answered: