gradle springboot 多模块打包jar

渔民小镇 发布于 2017/06/29 12:00
阅读 2K+
收藏 2

springboot多模块打包后,无法扫描子包jar.

在idea中是可以正常运行.

 

但是gradle build项目打包成jar 后无法扫描到子模块的类.

 

gradle有没有把子模块的class文件合成到主模块下.

或者把第三方jar的源码在gradle build时把jar中的源码复制到主jar中.

 

加载中
1
湖水没了
湖水没了

手动指定扫描的包也可以

湖水没了
湖水没了
回复 @渔泯小镇 : 劝君莫入歧途
渔民小镇
渔民小镇
回复 @kerneler : gradle 可以把所有写在主目录中的类打包成多个jar. 理论上来说也可以实现分开jia合并到一起. 我在看下.
湖水没了
湖水没了
回复 @渔泯小镇 : maven也没这个功能的,只有本地ide在工程依赖时,才会这样。还是按照规范来,不要在自己的路上走太远,小心脱离主流。框架不会扫描jar中所有类也是有原因的,springboot的解决方案就是你的入口类放在什么包,它就扫描这个包下的所有类,包括jar包中的类
渔民小镇
渔民小镇
回复 @kerneler : 问题是解决了. 但是我想问的是gradle有没有我说的那个功能.
渔民小镇
渔民小镇
回复 @kerneler : 谢了哥们. 发现是这个第三方扫描工具的bug. 换到spring的扫描没这个问题.
下一页
0
湖水没了
湖水没了

springboot只会扫描入口类所在的包和classes下面的类,你可以将入口类放在你的包中

0
渔民小镇
渔民小镇
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.type.classreading.CachingMetadataReaderFactory;
import org.springframework.core.type.classreading.MetadataReader;
import org.springframework.core.type.classreading.MetadataReaderFactory;
import org.springframework.util.StringUtils;



void scan() throws IOException, ClassNotFoundException {

        packName = "com.iohao.card.service";

        String locationPattern = "classpath*:" + StringUtils.replace(packName, ".", "/") + "/*/*.class";

        log.info("classPath: {}", locationPattern);

        PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();

        Resource[] resources = resolver.getResources(locationPattern);

        MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(resolver);

        for (Resource resource : resources) {
            MetadataReader metadataReader = metadataReaderFactory.getMetadataReader(resource);
            Class<?> clz = Class.forName(metadataReader.getClassMetadata().getClassName());

            if (RegionCacheService.class.isAssignableFrom(clz)) {
                log.info("spring clz: {}", clz);
            }
        }
    }

 

0
z
zangbgue

idea正常运行, 但是build, 子模块引入报错的问题, 请教楼主是怎么解决的, 谢谢. 

返回顶部
顶部