Microsphere Build is a Java Maven parent POM with common build settings, plugins configuration, etc, which is used for Microsphere Projects, like Microsphere Java, Microsphere Spring, etc.
Microsphere Build supports the following features:
- Language Support
- Plugins Management
- Profiles Management
- Project Settings
Microsphere Build supports the Maven project building on Java 8+ TLS and Java 17+ TLS.
- Maven JavaDoc Plugin
- Maven Release Plugin
- Maven Enforce Plugin
- Maven GPG Plugin
- Git Commit Id Plugin
- Central Publishing Maven Plugin
As of June 30, 2025 OSSRH has reached end of life and has been shut down. All OSSRH namespaces have been migrated to Central Publisher Portal.
- Maven JavaDoc Plugin
- Maven Release Plugin
- Maven Enforce Plugin
- Maven GPG Plugin
- Git Commit Id Plugin
- Nexus Maven Plugin
If you want to release the Java artifacts using OSSRH staging API, please see Publishing By Using the Portal OSSRH Staging API.
publish
(Recommended, since 0.2.0)release
(Legacy)ci
test
coverage
docs
java8+
(activated by JDK version)java9+
(activated by JDK version)java11
(activated by JDK version)java9-15
(activated by JDK version)java16+
(activated by JDK version)
<resources>
<resource>
<directory>src/main/java</directory>
<filtering>true</filtering>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/*</include>
</includes>
</resource>
</resources>
Maven JavaDoc Plugin will be added the options -Xdoclint:none
.
Maven Compiler Plugin's property maven.compiler.release
references on the another property ${java.version}
.
Maven JavaDoc Plugin will use the configuration source
based on the property ${maven.compiler.source}
.
Maven Surefire Plugin will append the argument line
--illegal-access=permit
for accessing to internal classes
Maven Surefire Plugin will append the argument line
--add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED
for accessing to
JDK modules' classes.
The root project's pom.xml should set the parent as follows:
<parent>
<groupId>io.github.microsphere-projects</groupId>
<artifactId>microsphere-build</artifactId>
<version>0.2.0</version>
</parent>