diff --git a/src/publish.ps1 b/src/publish.ps1 index cd3cc48..7e86d9e 100644 --- a/src/publish.ps1 +++ b/src/publish.ps1 @@ -10,6 +10,7 @@ git push # build mvn clean package +Rename-Item -Path target/graphite_digester_bg-$version.jar -NewName "app-$version.jar" # upload scp target/app-$version.jar root@192.168.8.10:/app-java/ diff --git a/src/src/main/java/com/my/graphiteDigesterBg/MyApplicationRunner.java b/src/src/main/java/com/my/graphiteDigesterBg/MyApplicationRunner.java index 6f76769..8fb879c 100644 --- a/src/src/main/java/com/my/graphiteDigesterBg/MyApplicationRunner.java +++ b/src/src/main/java/com/my/graphiteDigesterBg/MyApplicationRunner.java @@ -6,6 +6,7 @@ import com.my.graphiteDigesterBg.diframe.DiDeviceIOManager; import com.my.graphiteDigesterBg.diframe.actuator.DiActMotor; import com.my.graphiteDigesterBg.diframe.actuator.DiActPeristalticPump; import com.my.graphiteDigesterBg.diframe.actuator.DiActServo; +import com.my.graphiteDigesterBg.diframe.util.DiClassHelper; import jakarta.annotation.Resource; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.ApplicationArguments; diff --git a/src/src/main/java/com/my/graphiteDigesterBg/diframe/connection/DiConWebsocketClient.java b/src/src/main/java/com/my/graphiteDigesterBg/diframe/connection/DiConWebsocketClient.java index 9718240..501886b 100644 --- a/src/src/main/java/com/my/graphiteDigesterBg/diframe/connection/DiConWebsocketClient.java +++ b/src/src/main/java/com/my/graphiteDigesterBg/diframe/connection/DiConWebsocketClient.java @@ -44,6 +44,5 @@ public class DiConWebsocketClient extends WebSocketClient { @Override public void onError(Exception e) { LOG.error("error", e); - throw new RuntimeException(e); } } diff --git a/src/src/main/java/com/my/graphiteDigesterBg/diframe/util/DiClassHelper.java b/src/src/main/java/com/my/graphiteDigesterBg/diframe/util/DiClassHelper.java index cd15923..fd2a445 100644 --- a/src/src/main/java/com/my/graphiteDigesterBg/diframe/util/DiClassHelper.java +++ b/src/src/main/java/com/my/graphiteDigesterBg/diframe/util/DiClassHelper.java @@ -1,10 +1,14 @@ package com.my.graphiteDigesterBg.diframe.util; import java.io.File; import java.io.IOException; +import java.net.JarURLConnection; import java.net.URL; import java.util.ArrayList; import java.util.Collections; +import java.util.Enumeration; import java.util.List; +import java.util.jar.JarEntry; + public class DiClassHelper { // get all classes in package public static List> getAllClassesInPackage(String packageName) { @@ -15,6 +19,8 @@ public class DiClassHelper { for (URL resource : resources) { if ( "file".equals(resource.getProtocol()) ) { DiClassHelper.getClassListByGivenFilePath(packageName,resource.getFile(), classes); + } else if ( "jar".equals(resource.getProtocol()) ) { + DiClassHelper.getClassListByGivenJarPath(packageName,resource, classes); } else { throw new RuntimeException("Unsupported protocol: " + resource.getProtocol()); } @@ -25,6 +31,38 @@ public class DiClassHelper { return classes; } + // get class list by given jar path + private static void getClassListByGivenJarPath( String packageName, URL resource, List> classes ) { + JarURLConnection urlConnection = null; + try { + urlConnection = (JarURLConnection) resource.openConnection(); + } catch (IOException e) { + throw new RuntimeException(e); + } + + Enumeration entries = null; + try { + entries = urlConnection.getJarFile().entries(); + } catch (IOException e) { + throw new RuntimeException(e); + } + + while (entries.hasMoreElements()) { + // 获取jar里的一个实体 可以是目录 和一些jar包里的其他文件 如META-INF等文件 + JarEntry entry = entries.nextElement(); + String entryName = entry.getName(); + if ( entryName.endsWith(".class") ) { + try { + String className = entryName.substring(0, entryName.length() - 6); + className = className.replace("/", "."); + classes.add(Class.forName(className)); + } catch (ClassNotFoundException e) { + throw new RuntimeException(e); + } + } + } + } + // get class list by given file path private static void getClassListByGivenFilePath( String packageName, String filePath, List> classes ) { File file = new File(filePath); diff --git a/src/src/main/resources/application.yml b/src/src/main/resources/application.yml index d3184d9..1e2c6ce 100644 --- a/src/src/main/resources/application.yml +++ b/src/src/main/resources/application.yml @@ -5,6 +5,9 @@ spring: password: 1 driver-class-name: org.sqlite.JDBC +server: + port: 80 + #mybatis: # configuration: # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl