Fix#2543, nacos App Metadata not compatible with java (#2563) (#2615)

diff --git a/metadata/report/nacos/report.go b/metadata/report/nacos/report.go
index fd8182c..f889ad1 100644
--- a/metadata/report/nacos/report.go
+++ b/metadata/report/nacos/report.go
@@ -69,14 +69,24 @@
 
 // GetAppMetadata get metadata info from nacos
 func (n *nacosMetadataReport) GetAppMetadata(metadataIdentifier *identifier.SubscriberMetadataIdentifier) (*common.MetadataInfo, error) {
+	// compatible with java impl first
 	data, err := n.getConfig(vo.ConfigParam{
-		DataId: metadataIdentifier.GetIdentifierKey(),
-		Group:  n.group,
+		DataId: metadataIdentifier.Application,
+		Group:  metadataIdentifier.Revision,
 	})
 	if err != nil {
 		return nil, err
 	}
-
+	if data == "" {
+		// compatible with dubbo-go 3.1.x before
+		data, err = n.getConfig(vo.ConfigParam{
+			DataId: metadataIdentifier.GetIdentifierKey(),
+			Group:  n.group,
+		})
+		if err != nil {
+			return nil, err
+		}
+	}
 	var metadataInfo common.MetadataInfo
 	err = json.Unmarshal([]byte(data), &metadataInfo)
 	if err != nil {
@@ -91,7 +101,16 @@
 	if err != nil {
 		return err
 	}
-
+	// compatible with java impl
+	err = n.storeMetadata(vo.ConfigParam{
+		DataId:  metadataIdentifier.Application,
+		Group:   metadataIdentifier.Revision,
+		Content: string(data),
+	})
+	if err != nil {
+		return err
+	}
+	// compatible with dubbo-go 3.1.x before
 	return n.storeMetadata(vo.ConfigParam{
 		DataId:  metadataIdentifier.GetIdentifierKey(),
 		Group:   n.group,
diff --git a/metadata/report/nacos/report_test.go b/metadata/report/nacos/report_test.go
index 759a456..3d87eaa 100644
--- a/metadata/report/nacos/report_test.go
+++ b/metadata/report/nacos/report_test.go
@@ -212,7 +212,7 @@
 
 	ctrl := gomock.NewController(t)
 	mnc := NewMockIConfigClient(ctrl)
-	mnc.EXPECT().GetConfig(gomock.Any()).Return(string(data), nil)
+	mnc.EXPECT().GetConfig(gomock.Any()).MaxTimes(2).Return(string(data), nil)
 	nc := &nacosClient.NacosConfigClient{}
 	nc.SetClient(mnc)
 
@@ -253,7 +253,7 @@
 func Test_nacosMetadataReport_PublishAppMetadata(t *testing.T) {
 	ctrl := gomock.NewController(t)
 	mnc := NewMockIConfigClient(ctrl)
-	mnc.EXPECT().PublishConfig(gomock.Any()).Return(true, nil)
+	mnc.EXPECT().PublishConfig(gomock.Any()).Times(2).Return(true, nil)
 	nc := &nacosClient.NacosConfigClient{}
 	nc.SetClient(mnc)