Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project’s build, reporting and documentation from a central piece of information. For more detail, see

Introduction of Google Error-Prone

Introdution to Google Error-Prone in Maven, which augments the compiler's type analysis and catches more mistakes at compile time!

Build Helper Maven Plugin

How to set up additional source directory (src/it/java) and resource directory (src/it/resources) for integration tests in Maven project using Build Helper Maven Plugin.

Inspect Maven Dependency Tree

Inspecting Maven dependencies via Maven Depenedency Plugin: dependency listing, dependency filtering, exporting result to file etc.

Docker Maven Plugin

Introduction to Docker Maven Plugin: how to build and run Docker images in Maven via samples from Debezium and Docker Maven Plugin itself.

Specifying Maven Local Repository From CLI

Use option "maven.repo.local" to specify the Maven local repository path.

Project qWatch

Quality Watch (qWatch) is a data aggregator for code quality, based on different metrics.

TDD: After 3 Months' Practice

I started TDD in all my personal projects 3 months ago. Here're some thoughts about it, including architecture, IDE, methodology, execution speed up, legacy code, and limits.

Speed Up The Maven Build

How to speed up a Maven project by using different tips.

Maven Failsafe Plugin Understanding

Maven Failsafe Plugin runs integration tests for your Maven project. In this article, we will see what is Failsafe plugin and its common use cases.

Maven Surefire Plugin Understanding

Maven Surefire Plugin is used during the "test" phase of Maven build lifecycle to execute unit tests. It can be used with JUnit, TestNG or other frameworks. This article explains what is Surefire plugin and its common use cases.

Maven Resources Plugin Understanding

Maven Resources Plugin is part of the core Maven plugins, which handles resources copying to the output directory. It has 3 goals: "resources", "testResources", and "copy-resources". In this post, I'll show you some common use-cases of this plugin.

Maven JAR Plugin Understanding

A step-by-step guide for understanding Maven JAR Plugin in Java 8 and Java 11.

Maven Compiler Plugin Understanding

A step-by-step guide for understanding Maven Compiler Plugin in Java 11.

Maven: Deploy Artifacts to Nexus

Declare Maven deploy plugin in the parent POM. It's the same no matter your project is a single module project or a multi-modules project. Then, define the Nexus repository id and url in distributionManagement. After that, add your credentials in ~/.m2/settings.xml. Finally, execute command `mvn deploy` to deploy your artifacts.

Java 9 Migration

Java 9 migration for Maven project. It consists Java 9 installation, IDE update, Maven project update, CI update, and fixing tests. This article is written using macOS and IntelliJ IDEA.

Learning Checkstyle

Checkstyle is a development tool to help programmers write Java code that adheres to a coding standard. By default it supports the Google Java Style Guide and Sun Code Conventions, but is highly configurable. It can be invoked with an ANT task and a command line program.

Learning GWT with Maven

Today, I want to share how to learn GWT 2.8 with Maven GWT Plugin. I wrote this post because the official GWT tutorial has some inconvenience: source code and resources are stored as GWT standard structure, commands must be launched from Apache Ant, JARs and classpath must be handled explicitly etc. I found it more comfortable to start with Maven, the tool which many Java developers are familiar with.

Sonar Integration with Maven

A concret Sonar integration example for your Java project, using Maven + JaCoCo + SonarCloud + Jenkins.

Maven Plugins Understanding

Some interesting facts that I discovered about Maven plugins.

Test a POM-Packaging Maven Module

Recently, I need to write tests for resources inside a Maven module and I met some technical issues. The context of the situation is that I need to test some resources located in a Maven module, where its packaging value is pom. I think it’s worth to take some notes, so I wrote them down and share with you.

Miscellaneous Tips for Development

Miscellaneous tips for development in Git and Maven.