Maven plugin to help creating CHANGELOG by keeping one format and solving merge request conflicts problem by extraction of new CHANGELOG entries to seperate files.

Overview

keep-changelog-maven-plugin

CHANGELOG.md is one of the most important files in a repository. It allows others to find out about the most important changes in the project in short time. To achieve this, CHANGELOG.md should be created be in accordance with the rules, however there is no one standard agreed by community.

Another big problem with CHANGELOG.md is a problem with merge conflicts. Probably you, as a developer also encounter it, when someone merged changes to CHANGELOG.md before you.

To solve these problems, this maven plugin was created. It allows to keep a changelog style and reduce merge request conflicts by keeping every change in a separate YAML file and generate CHANGELOG.md during release.

This plugin is also helpful to create reliable release notes during your release process.

Reference

The convention is maintained according to the principles set out in the Keep a Changelog and with some additions as a result from experience in developing various types of projects.

The same problem with merge conflicts with CHANGELOG.md was described by GitLab. LINK

Example

The example project with this plugin usage you can find in example directory.

Usage

Starting

Add a plugin to your pom.xml. For multi-module projects with one CHANGELOG.md add it in main pom.xml.

    <build>
        <plugins>
            <plugin>
                <groupId>io.github.marwin1991</groupId>
                <artifactId>keep-changelog-maven-plugin</artifactId>
                <version>0.3.0</version>
            </plugin>
        </plugins>
    </build>

[in-progress] Use this command from your terminal to create important directories and empty CHANGELOG.md

mvn keep-changelog:init

If you already had a CHANGELOG.md file you can move it to changelog/archive.md file. The name of the archive file have to start from archive phrase (f.e. archive-1.0.0.md).

After using init command or just creating changelog/unreleased directory your project is ready, and you can start adding new changelog entries by creating YAML files.

IMPORTANT: If you develop on two main branches like f.e 1.1.X and 1.2.X do not merge 1.1.X branch to 1.2.X before release otherwise YAML files will merge in one big version. In future there is a plan to support unreleased* directories names like unreleased-1.1

Adding new change

TODO

YAML format

TODO

Generating CHANGELOG.md

TODO

CHANGELOG.md structure overview

TODO

Versions summaries

TODO

Releasing the version

TODO

Archives

TODO

TODO:

  • add command to create archive-X.md from selected directory
  • add tests
  • add javadocs
  • support unreleased* directories names like unreleased-1.1
Issues
  • Implementing empty changelog

    Implementing empty changelog

    -empty CHANGELOG.md can be created in main directory

    • .gitkeep file can be created in ./changelog/unreleased/
    opened by Glukasze 1
  • Move javadoc plugin to ci-cd profile

    Move javadoc plugin to ci-cd profile

                    <artifactId>maven-release-plugin</artifactId>
                    <version>3.0.0-M1</version>
                    <configuration>
                        <scmCommentPrefix>[ci skip]</scmCommentPrefix>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-source-plugin</artifactId>
                    <version>3.2.1</version>
                    <executions>
                        <execution>
                            <id>attach-sources</id>
                            <goals>
                                <goal>jar-no-fork</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>3.2.0</version>
                    <executions>
                        <execution>
                            <id>attach-javadocs</id>
                            <goals>
                                <goal>jar</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
    

    Move this section to ci-cd profile

    opened by marwin1991 1
  • Update maven-release.yml

    Update maven-release.yml

    opened by marwin1991 0
  • Release

    Release

    opened by marwin1991 0
  • Changes by create-pull-request action

    Changes by create-pull-request action

    opened by github-actions[bot] 0
  • Release

    Release

    opened by marwin1991 0
Releases(0.3.0)
  • 0.3.0(Apr 3, 2021)

    [0.3.0] - 2021-04-03

    Added (1 change)

    • Added generation of version-summary.md in every version's directory during CHANGELOG.md (@marwin1991)
    Source code(tar.gz)
    Source code(zip)
  • 0.2.0(Apr 1, 2021)

    [0.2.0] - 2021-04-01

    Added (3 changes)

    • Added maven command to tag unreleased version of CHANGELOG.md (Piotr @marwin1991)
    • Added maven command to initialize project with changelog/unreleased directory and empty CHANGELOG.md !3 (@Glukasze)
    • Added example directory witch contains simple springboot project with keep-changelog plugin (Piotr @marwin1991)
    Source code(tar.gz)
    Source code(zip)
Owner
Piotr Zmilczak
Software Engineer Java/Spring/Android - DevOps Approach Lover - Stock Market Enthusiast
Piotr Zmilczak
:package: Gradle/Maven plugin to package Java applications as native Windows, Mac OS X, or GNU/Linux executables and create installers for them.

JavaPackager JavaPackager is a hybrid plugin for Maven and Gradle which provides an easy way to package Java applications in native Windows, Mac OS X

Francisco Vargas Ruiz 281 Mar 12, 2021
Launch4j Maven Plugin

Launch4j Maven Plugin

Lukasz Lenart 248 Mar 13, 2021
Publish Jenkins performances metrics to an OpenTelemetry endpoint, including distributed traces of job executions and health metrics of the controller.

OpenTelemetry Introduction Architecture Features Getting Started Examples Configuration as Code Contributing Introduction Collect Jenkins monitoring d

Jenkins 13 Mar 31, 2021
Packages your JAR, assets and a JVM for distribution on Windows, Linux and Mac OS X

About Packages your JAR, assets and a JVM for distribution on Windows, Linux and macOS, adding a native executable file to make it appear like a nativ

libgdx 2.2k Mar 10, 2021
Download, Install, Update

What is it? Getdown (yes, it's the funky stuff) is a system for deploying Java applications to end-user computers, as well as keeping those applicatio

Three Rings 416 Feb 7, 2021
A BurpSuite plugin for BBRF

bbrf-burp-plugin What's BBRF? The Bug Bounty Reconnaissance Framework (BBRF) is intended to facilitate the workflows of security researchers across mu

Pieter 16 Mar 23, 2021
maven plugin for making chmod +x jar files

To use it, add a plugin to your pom like <!-- You need to build an exectuable uberjar, I like Shade for that --> <plugin> <groupId>org.apache.mave

Brian McCallister 94 Dec 18, 2020
Prosta wtyczka na serwery Minecraft mająca za zadanie karać graczy za wyjście z gry podczas walki.

Czym jest combat-plugin? combat-plugin jest wtyczką na serwery Minecraft który ma za zadanie karać graczy którzy wyjdą z serwera podczas walki. Wtyczk

Mikolaj 13 Mar 25, 2021
JitPack is a novel package repository for JVM and Android projects.

JitPack is a novel package repository for JVM and Android projects. It builds Git projects on demand and provides you with ready-to-use artifacts (jar, aar).

JitPack 2k Mar 13, 2021
IzPack - Source Code

IzPack IzPack is a widely used tool for packaging applications on the Java platform as cross-platform installers. License IzPack is published under th

IzPack 260 Mar 11, 2021
Sonatype Nexus Repository Open Source Codebase

Builds use Apache Maven and require Java 8. Apache Maven wrapper scripts are included in the source tree.

Sonatype 900 Mar 12, 2021
Binary Artifact Management Tool

Artipie is an experimental binary artifact management tool, similar to Artifactory, Nexus, Archiva, ProGet, and many others. The following set of feat

Artipie 226 Mar 12, 2021
程序员常用的工具集Idea插件,帮助开发人员提升效率

Programmer toolkit Github地址: https://github.com/silently9527/ToolsetIdeaPlugin Gitee地址: https://gitee.com/silently9527/ToolsetIdeaPlugin 觉得好用的小伙伴记得小手一

Silently9527 254 Mar 30, 2021
Spring Native provides beta support for compiling Spring applications to native executables using GraalVM native-image compiler.

Spring Native provides beta support for compiling Spring applications to native executables using GraalVM native-image compiler.

Spring Projects Experimental 1.8k May 1, 2021