diff --git a/dubbo-common/pom.xml b/dubbo-common/pom.xml
index 3205760a5d..335eee3002 100644
--- a/dubbo-common/pom.xml
+++ b/dubbo-common/pom.xml
@@ -100,8 +100,38 @@
javax.annotation
javax.annotation-api
-
-
+
+
+
+ org.apache.maven.plugins
+ maven-antrun-plugin
+
+
+ get-version-infos
+ compile
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+ run
+
+
+
+
+
+
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/Version.java b/dubbo-common/src/main/java/org/apache/dubbo/common/Version.java
index 9f9a1d1e11..6b5bb4f279 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/Version.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/Version.java
@@ -19,15 +19,19 @@ package org.apache.dubbo.common;
import org.apache.dubbo.common.logger.ErrorTypeAwareLogger;
import org.apache.dubbo.common.logger.LoggerFactory;
import org.apache.dubbo.common.utils.ClassUtils;
+import org.apache.dubbo.common.utils.ConfigUtils;
import org.apache.dubbo.common.utils.StringUtils;
import java.io.IOException;
import java.net.URL;
import java.security.CodeSource;
+import java.util.Collections;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
+import java.util.Optional;
+import java.util.Properties;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -46,8 +50,9 @@ public final class Version {
public static final String DEFAULT_DUBBO_PROTOCOL_VERSION = "2.0.2";
// version 1.0.0 represents Dubbo rpc protocol before v2.6.2
public static final int LEGACY_DUBBO_PROTOCOL_VERSION = 10000; // 1.0.0
- // Dubbo implementation version, usually is jar version.
- private static final String VERSION = getVersion(Version.class, "");
+ // Dubbo implementation version.
+ private static String VERSION;
+ private static String LATEST_COMMIT_ID;
/**
* For protocol compatibility purpose.
@@ -61,6 +66,21 @@ public final class Version {
static {
// check if there's duplicated jar
Version.checkDuplicate(Version.class);
+
+ // get dubbo version and last commit id
+ try {
+ Properties properties =
+ ConfigUtils.loadProperties(Collections.emptySet(), "META-INF/version");
+
+ VERSION = Optional.ofNullable(properties.getProperty("revision"))
+ .filter(StringUtils::isNotBlank)
+ .orElseGet(() -> getVersion(Version.class, ""));
+ LATEST_COMMIT_ID = Optional.ofNullable(properties.getProperty("git.commit.id")).orElse("");
+ } catch (Throwable e) {
+ logger.warn(COMMON_UNEXPECTED_EXCEPTION, "", "", "continue the old logic, ignore exception " + e.getMessage(), e);
+ VERSION = getVersion(Version.class, "");
+ LATEST_COMMIT_ID = "";
+ }
}
private Version() {
@@ -74,6 +94,10 @@ public final class Version {
return VERSION;
}
+ public static String getLastCommitId() {
+ return LATEST_COMMIT_ID;
+ }
+
/**
* Compare versions
*
diff --git a/dubbo-common/src/main/resources/META-INF/version b/dubbo-common/src/main/resources/META-INF/version
new file mode 100644
index 0000000000..c53621b1ab
--- /dev/null
+++ b/dubbo-common/src/main/resources/META-INF/version
@@ -0,0 +1 @@
+# This is a placeholder file, the real file will be output when the project compiles
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/version/VersionTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/version/VersionTest.java
index 39093a8d55..0c6604e74d 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/version/VersionTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/version/VersionTest.java
@@ -91,4 +91,14 @@ class VersionTest {
Assertions.assertTrue(Version.isRelease263OrHigher("2.6.3"));
Assertions.assertTrue(Version.isRelease263OrHigher("2.6.3.0"));
}
-}
\ No newline at end of file
+
+ @Test
+ void testGetVersion() {
+ Assertions.assertEquals("1.0.0", Version.getVersion());
+ }
+
+ @Test
+ void testGetLastCommitId() {
+ Assertions.assertEquals("82a29fcd674216fe9bea10b6efef3196929dd7ca", Version.getLastCommitId());
+ }
+}
diff --git a/dubbo-common/src/test/resources/META-INF/version b/dubbo-common/src/test/resources/META-INF/version
new file mode 100644
index 0000000000..2fc6840bf0
--- /dev/null
+++ b/dubbo-common/src/test/resources/META-INF/version
@@ -0,0 +1,3 @@
+# This is a test file
+revision=1.0.0
+git.commit.id=82a29fcd674216fe9bea10b6efef3196929dd7ca
diff --git a/pom.xml b/pom.xml
index be793127bb..9323273df3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -124,6 +124,7 @@
0.8.8
1.3.0
3.2.1
+ 3.1.0
true
true
@@ -801,6 +802,11 @@
jetty-maven-plugin
${maven_jetty_version}
+
+ org.apache.maven.plugins
+ maven-antrun-plugin
+ ${maven_antrun_version}
+