多模块Maven项目中,spring无法扫描到子模块jar包中的bean注解

前提

项目是由N个project组成的多模块Maven项目:

  • web模块,打包成war
  • 其他子模块,打包成jar,由maven根据pom.xml的dependencies自动打包放入web模块的WEB-INF/lib

问题

其他子模块也用到了spring的注解,例如@Service、@Controller等等
当使用Weblogic启动项目后,初始化Spring IOC容器失败,报各种NoSuchBeanException异常

解决方法

在对应的子模块的 pom.xml 文件中添加plugin,然后重新打包

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.4</version>
        <configuration>
            <archive>
                <manifest>
                    <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                </manifest>
            </archive>
        </configuration>
    </plugin>

总结

该方法类似于使用eclipse,在打包 非Maven项目 时选择Add directory entries选项

猜你喜欢

转载自www.cnblogs.com/zhuang229/p/12371195.html