for some old version of git-commit-id-plugin, for example, `


there is a Auth Fail error, when the plugin is in execution.

Turns out there was a bug (should be fixed in latest version), which uses JGitDataProvider, and requesting for



mark the plugin as office sorted out the issue

<plugin> <groupId>pl.project13.maven</groupId> <artifactId>git-commit-id-plugin</artifactId> <version>4.9.10</version> <configuration> <verbose>false</verbose> <useNativeGit>true</useNativeGit> <offline>true</offline> </configuration>


Originally published at on March 22, 2022.



Turns out when spring boot construct the configuration bean, it’s using the setter method to map the values.

So for IgniteConfiguration, for example, even though the variable for peer ClassLoading is

private boolean p2pEnabled =DFLT_P2P_ENABLED;

however, the values below won’t work

instead, it should be

peerClassLoadingEnabled: true

as the setter to set the p2pEnabled is actually called

public IgniteConfiguration setPeerClassLoadingEnabled(boolean p2pEnabled) { this.p2pEnabled = p2pEnabled; return this; }


Originally published at on March 3, 2022.



there are many options for continuous deployment. one possible approach is to leverage on ansible and couple it with gitlab.

so in .gitlab-ci.yml

add a deploy stage

ansible will try to remove the old container and start the newly built docker image from previous steps.


Originally published at on January 25, 2022.



I was not able to generate the at the beginning. somehow turns out it was due to a missing version for the plugin.

<plugin> <groupId>pl.project13.maven</groupId> <artifactId>git-commit-id-plugin</artifactId> <version>4.0.5</version> <!--need to add the specific version--> <executions> <execution> <goals> <goal>revision</goal> </goals> </execution> </executions> </plugin>

with that, at packaging, it could generate the package with the SHA.


the package name like ABC-1.0-7X7X40a-SNAPSHOT.jar

at runtime, with spring actuator enabled, it could auto pick up the commit info:


Originally published at on January 13, 2022.



following up with and, there are times where a class defined upstream (either third party or shared library internally) should be overriden.

The trick is to keep the class name exact with the same package name. when maven shaded the class, it would pick up the class from the closest level.

For example, if module ACore has a class names org.wordpress.util.DomainMapper, a class with the exact same name org.wordpress.util.DomainMapper could be created in A1 module to override the provided functionality.

when build module A with -amd, it would generated a A2 jar, which contains the compiled class binary from ACore. while the generated A1 jar, would contain the override class created in A1 module.


Originally published at on December 28, 2021.