我正在开发一个跨两个 Eclipse 项目(myclient 和 myservice)的 GWT Web 应用程序。
myclient 项目通过 POM 中的依赖项引用 myservice 项目。
<dependency>
<groupId>com.myproject</groupId>
<artifactId>myservices</artifactId>
<version>1.0.0</version>
</dependency>
myclient 项目有一个 WAR 目录 src/main/webapp。myclient 项目的输出文件夹是 src/main/webapp/WEB-INF/classes。
myclient 项目有一个 Spring 描述符 application-context.xml,其中包含以下内容
<context:component-scan base-package="com.myproject.myclient, com.myproject.myservices"/>
和 web.xml
<web-app>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/application-context.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
...
</web-app>
我在 myservices 项目中有几个文件被注释为 spring @Component、@Service、@Configuration,但是当我在 Eclipse 中运行 GWT 应用程序时,组件扫描不会拾取这些文件。作为测试,我尝试在 myclient 项目中放置一个 @Component 并成功创建。
我相信应用程序启动期间的以下日志条目表明了问题的根源
org.springframework.core.io.support.PathMatchingResourcePatternResolver - Resolved location pattern [classpath*:com/myproject/myservices/**/*.class] to resources []
myclient 项目的位置模式解析为类路径上的所有资源,但对于 myservices 没有找到资源。
我尝试构建 myservices 项目 JAR 并将这个 JAR 放入 myclient 项目的 src/main/webapp/WEB-INF/lib 文件夹中。当我这样做时,组件扫描工作。但是对于开发,我不想每次对 myservices 项目进行更改时都必须构建和复制 JAR。我想组件扫描应该在通过 POM 引用的项目上工作,而不必构建该项目,但经过大量试验,我无法让它工作。