spring-brick-common
diff --git a/spring-brick-bootstrap/pom.xml b/spring-brick-bootstrap/pom.xml
index bb304105d883b017085f4a0b66cb9cc9c537376d..9afb2c212b3fac9d5032849485b785ad2c271c22 100644
--- a/spring-brick-bootstrap/pom.xml
+++ b/spring-brick-bootstrap/pom.xml
@@ -7,7 +7,7 @@
spring-brick-parent
com.gitee.starblues
- 3.1.1
+ 3.1.1.2
spring-brick-bootstrap
diff --git a/spring-brick-bootstrap/src/main/java/com/gitee/starblues/bootstrap/launcher/CoexistBootstrapLauncher.java b/spring-brick-bootstrap/src/main/java/com/gitee/starblues/bootstrap/launcher/CoexistBootstrapLauncher.java
index dc226e612210a4df0137f78fee47bd1b3a6c5c09..93ecb3db3a67ef447b4773b5ec55c01dfe868b4b 100644
--- a/spring-brick-bootstrap/src/main/java/com/gitee/starblues/bootstrap/launcher/CoexistBootstrapLauncher.java
+++ b/spring-brick-bootstrap/src/main/java/com/gitee/starblues/bootstrap/launcher/CoexistBootstrapLauncher.java
@@ -103,7 +103,7 @@ public class CoexistBootstrapLauncher implements BootstrapLauncher{
if(autowiredType != null){
return autowiredType.value();
} else {
- return AutowiredType.Type.PLUGIN;
+ return AutowiredType.Type.PLUGIN_MAIN;
}
}
}
diff --git a/spring-brick-common/pom.xml b/spring-brick-common/pom.xml
index e3b63b278259259942b13e6f88165658ba9fdb77..8071dc10a8122e8d26ec80f79925be387b379d41 100644
--- a/spring-brick-common/pom.xml
+++ b/spring-brick-common/pom.xml
@@ -7,7 +7,7 @@
spring-brick-parent
com.gitee.starblues
- 3.1.1
+ 3.1.1.2
spring-brick-common
diff --git a/spring-brick-loader/pom.xml b/spring-brick-loader/pom.xml
index 2eee617fecace8772dc73b6e22f752e6039e6137..0fca51d0531f5f71ee6962290946438e73ff0ca6 100644
--- a/spring-brick-loader/pom.xml
+++ b/spring-brick-loader/pom.xml
@@ -5,7 +5,7 @@
spring-brick-parent
com.gitee.starblues
- 3.1.1
+ 3.1.1.2
4.0.0
diff --git a/spring-brick-loader/src/main/java/com/gitee/starblues/loader/classloader/GeneralUrlClassLoader.java b/spring-brick-loader/src/main/java/com/gitee/starblues/loader/classloader/GeneralUrlClassLoader.java
index 8fcd39e096ade1d29ca214a1256d2b16baae59e1..7989c1257f1914641ace8bbb06c9d3417ee4ffea 100644
--- a/spring-brick-loader/src/main/java/com/gitee/starblues/loader/classloader/GeneralUrlClassLoader.java
+++ b/spring-brick-loader/src/main/java/com/gitee/starblues/loader/classloader/GeneralUrlClassLoader.java
@@ -1,12 +1,12 @@
/**
* Copyright [2019-Present] [starBlues]
- *
+ *
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -17,6 +17,7 @@
package com.gitee.starblues.loader.classloader;
import com.gitee.starblues.loader.classloader.resource.Resource;
+import com.gitee.starblues.loader.classloader.resource.loader.JarResourceLoader;
import com.gitee.starblues.loader.classloader.resource.loader.ResourceLoader;
import com.gitee.starblues.loader.classloader.resource.loader.ResourceLoaderFactory;
import com.gitee.starblues.loader.classloader.resource.storage.EmptyResourceStorage;
@@ -36,8 +37,8 @@ import java.util.List;
* 通用的Url ClassLoader
*
* @author starBlues
- * @since 3.0.4
* @version 3.1.0
+ * @since 3.0.4
*/
public class GeneralUrlClassLoader extends URLClassLoader implements ResourceLoaderFactory {
@@ -63,7 +64,7 @@ public class GeneralUrlClassLoader extends URLClassLoader implements ResourceLoa
@Override
public void addResource(File file) throws Exception {
- if(!file.exists()){
+ if (!file.exists()) {
throw new FileNotFoundException("Not found file:" + file.getPath());
}
addURL(file.toPath().toUri().toURL());
@@ -86,7 +87,12 @@ public class GeneralUrlClassLoader extends URLClassLoader implements ResourceLoa
@Override
public void addResource(ResourceLoader resourceLoader) throws Exception {
- resourceLoader.load(resourceStorage);
+
+ if (resourceLoader instanceof JarResourceLoader) {
+ addResource(resourceLoader.getBaseUrl());
+ } else {
+ resourceLoader.load(resourceStorage);
+ }
}
@Override
diff --git a/spring-brick-maven-packager/pom.xml b/spring-brick-maven-packager/pom.xml
index 8756df06dd46a6163f50f2cb35647feaba865986..e349fd7ca423efe8ddba93badb48881adc99b981 100644
--- a/spring-brick-maven-packager/pom.xml
+++ b/spring-brick-maven-packager/pom.xml
@@ -7,7 +7,7 @@
spring-brick-parent
com.gitee.starblues
- 3.1.1
+ 3.1.1.2
spring-brick-maven-packager
diff --git a/spring-brick-maven-packager/src/main/java/com/gitee/starblues/plugin/pack/prod/ZipProdRepackager.java b/spring-brick-maven-packager/src/main/java/com/gitee/starblues/plugin/pack/prod/ZipProdRepackager.java
index 5da4b4f6dc99a81413f656242daa8ae5d881776f..7b6b8cc2fbab86dd9dca911090ff94e594a14a7a 100644
--- a/spring-brick-maven-packager/src/main/java/com/gitee/starblues/plugin/pack/prod/ZipProdRepackager.java
+++ b/spring-brick-maven-packager/src/main/java/com/gitee/starblues/plugin/pack/prod/ZipProdRepackager.java
@@ -183,7 +183,7 @@ public class ZipProdRepackager extends DevRepackager {
File artifactFile = artifact.getFile();
packageZip.writeDependency(artifactFile, libDirEntryName);
// fix 解决依赖前缀携带, lib 配置的前缀
- dependencyIndexNames.add(artifactFile.getName());
+ dependencyIndexNames.add(artifactFile.getName() + repackageMojo.resolveLoadToMain(artifact));
}
return dependencyIndexNames;
}
diff --git a/spring-brick-maven-packager/src/main/resources/META-INF/maven/plugin.xml b/spring-brick-maven-packager/src/main/resources/META-INF/maven/plugin.xml
index 7579b252d6b359c8b0445e482659ad732cbd53dc..d5ac9a0c6383b2c0bb5fda7ab42c4ecec10f5e6e 100644
--- a/spring-brick-maven-packager/src/main/resources/META-INF/maven/plugin.xml
+++ b/spring-brick-maven-packager/src/main/resources/META-INF/maven/plugin.xml
@@ -4,7 +4,7 @@
Spring Boot Plugin Maven Packager
com.gitee.starblues
spring-brick-maven-packager
- 3.1.1
+ 3.1.1.2
spring-brick-packager
false
true
diff --git a/spring-brick/pom.xml b/spring-brick/pom.xml
index 312573dbee59d04abead6807a49328ae02297744..06ab6f1351092448493c04d95debb208f6794530 100644
--- a/spring-brick/pom.xml
+++ b/spring-brick/pom.xml
@@ -7,7 +7,7 @@
spring-brick-parent
com.gitee.starblues
- 3.1.1
+ 3.1.1.2
spring-brick
diff --git a/spring-brick/src/main/java/com/gitee/starblues/spring/web/thymeleaf/PluginThymeleafInvolved.java b/spring-brick/src/main/java/com/gitee/starblues/spring/web/thymeleaf/PluginThymeleafInvolved.java
index 350a3f92cae8389ef40f0336149eb205d43434d8..ba84650ff763c39492d7763503988d75dd7b54b9 100644
--- a/spring-brick/src/main/java/com/gitee/starblues/spring/web/thymeleaf/PluginThymeleafInvolved.java
+++ b/spring-brick/src/main/java/com/gitee/starblues/spring/web/thymeleaf/PluginThymeleafInvolved.java
@@ -26,10 +26,13 @@ import com.gitee.starblues.utils.ObjectUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.support.GenericApplicationContext;
+import org.thymeleaf.IEngineConfiguration;
+import org.thymeleaf.TemplateEngine;
import org.thymeleaf.spring5.SpringTemplateEngine;
import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver;
import org.thymeleaf.templateresolver.ITemplateResolver;
+import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
@@ -44,18 +47,35 @@ public class PluginThymeleafInvolved implements PluginLaunchInvolved {
private static final Logger logger = LoggerFactory.getLogger(PluginThymeleafInvolved.class);
- private Set templateResolvers;
+// private Set templateResolvers;
+ private SpringTemplateEngine springTemplateEngine;
private final Map pluginTemplateResolver = new ConcurrentHashMap<>();
@Override
public void initialize(GenericApplicationContext applicationContext, IntegrationConfiguration configuration) {
- this.templateResolvers = getTemplateResolvers(getSpringTemplateEngine(applicationContext));
+ try{
+ this.springTemplateEngine = getSpringTemplateEngine(applicationContext);
+ getTemplateResolvers(this.springTemplateEngine);
+ modifiyEngineConfiguration(this.springTemplateEngine);
+ } catch (Exception e){
+ logger.error("Plugin thymeleaf initialize exception. {}", e.getMessage(), e);
+ }
+ }
+
+ /**
+ * 默认的templateResolvers不可以修改,所以这里需要重新创建一个
+ */
+ private void modifiyEngineConfiguration(TemplateEngine templateEngine) throws IllegalAccessException {
+
+ IEngineConfiguration configuration = templateEngine.getConfiguration();
+ Set templateResolverSet = configuration.getTemplateResolvers();
+ ClassUtils.setReflectionField(configuration, "templateResolvers", new HashSet<>(templateResolverSet));
}
@Override
public void after(PluginInsideInfo pluginInsideInfo, ClassLoader classLoader, SpringPluginHook pluginHook) throws Exception {
- if(templateResolvers == null){
+ if(springTemplateEngine == null){
return;
}
@@ -94,7 +114,10 @@ public class PluginThymeleafInvolved implements PluginLaunchInvolved {
resolver.setOrder(order);
}
resolver.setCheckExistence(true);
- templateResolvers.add(resolver);
+ // 修复,当上传插件时,会出现模板解析不到的问题
+ getTemplateResolvers(springTemplateEngine).add(resolver);
+ getConfigTemplateResolvers(springTemplateEngine).add(resolver);
+
InsidePluginDescriptor descriptor = pluginInsideInfo.getPluginDescriptor();
if(!pluginTemplateResolver.containsKey(descriptor.getPluginId())){
pluginTemplateResolver.put(descriptor.getPluginId(), resolver);
@@ -103,7 +126,12 @@ public class PluginThymeleafInvolved implements PluginLaunchInvolved {
@Override
public void close(PluginInsideInfo pluginInsideInfo, ClassLoader classLoader) throws Exception {
+
+ ClassLoaderTemplateResolver resolver = pluginTemplateResolver.get(pluginInsideInfo.getPluginId());
pluginTemplateResolver.remove(pluginInsideInfo.getPluginId());
+ // 这里删除干净
+ getTemplateResolvers(springTemplateEngine).remove(resolver);
+ getConfigTemplateResolvers(springTemplateEngine).remove(resolver);
}
private SpringTemplateEngine getSpringTemplateEngine(GenericApplicationContext context){
@@ -120,6 +148,7 @@ public class PluginThymeleafInvolved implements PluginLaunchInvolved {
}
private Set getTemplateResolvers(SpringTemplateEngine springTemplateEngine) {
+
String errorMsg = "当前插件不能使用Thymeleaf, 主程序未发现Thymeleaf注册入口";
if(springTemplateEngine == null){
logger.error(errorMsg);
@@ -136,4 +165,9 @@ public class PluginThymeleafInvolved implements PluginLaunchInvolved {
}
}
+ private Set getConfigTemplateResolvers(SpringTemplateEngine springTemplateEngine) {
+
+ return springTemplateEngine.getConfiguration().getTemplateResolvers();
+ }
+
}
diff --git a/spring-brick/src/main/java/com/gitee/starblues/utils/ClassUtils.java b/spring-brick/src/main/java/com/gitee/starblues/utils/ClassUtils.java
index 3cb31897a7d4b0cca0798b412d11f2e4aeb1b1c4..f6079f7f560a73bbd1f7093b26b8adaf8f94fb64 100644
--- a/spring-brick/src/main/java/com/gitee/starblues/utils/ClassUtils.java
+++ b/spring-brick/src/main/java/com/gitee/starblues/utils/ClassUtils.java
@@ -84,6 +84,16 @@ public class ClassUtils {
return getReflectionField(templateResolversField, o);
}
+ public static void setReflectionField(Object object, String fieldName, Object value) throws IllegalAccessException {
+ if (object == null) {
+ return;
+ }
+ Field field = ReflectionUtils.findField(object.getClass(),
+ fieldName);
+ field.setAccessible(true);
+ field.set(object, value);
+ }
+
/**
* 通过反射Field获取字段
*