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} +