Ver código fonte

修复如果删掉了依赖,再重启会丢失依赖信息的问题

zhouhao 7 anos atrás
pai
commit
8b6c0d8ba0

+ 8 - 8
hsweb-starter/hsweb-spring-boot-starter/src/main/java/org/hswebframework/web/starter/SystemInitializeAutoConfiguration.java

@@ -69,10 +69,10 @@ public class SystemInitializeAutoConfiguration implements CommandLineRunner, Bea
     private AppProperties appProperties;
 
     @Autowired
-    DataSource dataSource;
+    private DataSource dataSource;
 
     @Autowired
-    SqlExecutor sqlExecutor;
+    private SqlExecutor sqlExecutor;
 
     @Autowired
     private ApplicationContext applicationContext;
@@ -92,11 +92,12 @@ public class SystemInitializeAutoConfiguration implements CommandLineRunner, Bea
     }
 
     protected void addGlobalVariable(String var, Object val) {
-        engines.forEach(engine ->{
-            try{
-                engine.addGlobalVariable(Collections.singletonMap(var, val));
-            }catch (Exception ignore){}
-            }
+        engines.forEach(engine -> {
+                    try {
+                        engine.addGlobalVariable(Collections.singletonMap(var, val));
+                    } catch (Exception ignore) {
+                    }
+                }
         );
     }
 
@@ -123,7 +124,6 @@ public class SystemInitializeAutoConfiguration implements CommandLineRunner, Bea
                 metaData.setParser(new MysqlTableMetaParser(sqlExecutor));
                 break;
             default:
-                h2:
                 metaData = new H2RDBDatabaseMetaData();
                 metaData.setParser(new H2TableMetaParser(sqlExecutor));
                 break;

+ 9 - 0
hsweb-starter/hsweb-spring-boot-starter/src/main/java/org/hswebframework/web/starter/init/SystemInitialize.java

@@ -64,6 +64,15 @@ public class SystemInitialize {
         if (installed == null) {
             rdbTable.createInsert().value(targetVersion).exec();
         } else {
+            //合并已安装的依赖
+            //修复如果删掉了依赖,再重启会丢失依赖信息的问题
+            for (SystemVersion.Dependency dependency : installed.getDependencies()) {
+                SystemVersion.Dependency target = targetVersion.getDependency(dependency.getGroupId(), dependency.getArtifactId());
+                if (target == null) {
+                    targetVersion.getDependencies().add(dependency);
+                }
+            }
+
             rdbTable.createUpdate().set(targetVersion).where().sql("1=1").exec();
         }
     }