【Emergency紧急求助】子系统组件化后通过Gradle引入另一个门户系统,子系统的所有bean都提示找不到

如题,组件化引入之后所有bean均找不到,而单独启动项目没有问题。无法定位到问题在哪,下面是报错信息:
restapi的bean:

17:23:01.887 ERROR c.h.a.r.a.c.RestControllerExceptionHandler- Exception in REST controller
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'saftyedutrain_AppBookSaveService' available
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:775) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1221) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:294) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1105) ~[spring-context-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at com.haulmont.cuba.core.sys.BeanLocatorImpl.get(BeanLocatorImpl.java:68) ~[cuba-global-7.1.1.jar:7.1.1]
	at com.haulmont.cuba.core.global.AppBeans.get(AppBeans.java:52) ~[cuba-global-7.1.1.jar:7.1.1]
	at com.haulmont.addon.restapi.api.service.ServicesControllerManager._invokeServiceMethod(ServicesControllerManager.java:106) ~[restapi-rest-api-7.1.0.jar:na]
	at com.haulmont.addon.restapi.api.service.ServicesControllerManager.invokeServiceMethodGet(ServicesControllerManager.java:78) ~[restapi-rest-api-7.1.0.jar:na]
	at com.haulmont.addon.restapi.api.controllers.ServicesController.invokeServiceMethodGet(ServicesController.java:62) ~[restapi-rest-api-7.1.0.jar:na]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_201]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_201]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_201]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_201]
	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:189) ~[spring-web-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) ~[spring-web-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102) ~[spring-webmvc-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:892) ~[spring-webmvc-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797) ~[spring-webmvc-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1038) ~[spring-webmvc-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942) ~[spring-webmvc-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005) [spring-webmvc-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:897) [spring-webmvc-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:634) [servlet-api.jar:na]
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882) [spring-webmvc-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) [servlet-api.jar:na]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) [catalina.jar:9.0.19]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.19]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320) [spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
	at com.haulmont.addon.restapi.api.auth.CubaRestLastSecurityFilter.doFilter(CubaRestLastSecurityFilter.java:90) [restapi-rest-api-7.1.0.jar:na]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127) [spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91) [spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119) [spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170) [spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
	at com.haulmont.addon.restapi.api.auth.CubaAnonymousAuthenticationFilter.doFilter(CubaAnonymousAuthenticationFilter.java:116) [restapi-rest-api-7.1.0.jar:na]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
	at org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationProcessingFilter.doFilter(OAuth2AuthenticationProcessingFilter.java:176) [spring-security-oauth2-2.3.4.RELEASE.jar:na]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
	at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:96) [spring-web-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
	at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:74) [spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
	at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56) [spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105) [spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
	at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:107) [spring-web-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) [spring-web-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:112) [spring-web-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at com.haulmont.addon.restapi.api.sys.RestExceptionLoggingFilter.doFilter(RestExceptionLoggingFilter.java:42) [restapi-rest-api-7.1.0.jar:na]
	at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:112) [spring-web-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:73) [spring-web-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
	at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215) [spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178) [spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:357) [spring-web-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:270) [spring-web-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:9.0.19]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.19]
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) [tomcat-websocket.jar:9.0.19]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:9.0.19]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.19]
	at com.haulmont.cuba.web.sys.CubaHttpFilter.doFilter(CubaHttpFilter.java:112) [cuba-web-7.1.1.jar:7.1.1]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:9.0.19]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.19]
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200) [catalina.jar:9.0.19]
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [catalina.jar:9.0.19]
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490) [catalina.jar:9.0.19]
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) [catalina.jar:9.0.19]
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) [catalina.jar:9.0.19]
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678) [catalina.jar:9.0.19]
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) [catalina.jar:9.0.19]
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) [catalina.jar:9.0.19]
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408) [tomcat-coyote.jar:9.0.19]
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-coyote.jar:9.0.19]
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:836) [tomcat-coyote.jar:9.0.19]
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1747) [tomcat-coyote.jar:9.0.19]
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-coyote.jar:9.0.19]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_201]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_201]
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-util.jar:9.0.19]
	at java.lang.Thread.run(Thread.java:748) [na:1.8.0_201]

PC端service bean报错:

com.haulmont.cuba.core.global.DevelopmentException: Unable to find an instance of type 'interface impc.aj.saftyedutrain.service.common.SetDictionaryService' named 'dictionaryService' for instance of 'impc.aj.saftyedutrain.web.screens.safeknowledgebase.accidentcase.AccidentCaseBrowse'
	at com.haulmont.cuba.gui.sys.UiControllerDependencyInjector.doInjection(UiControllerDependencyInjector.java:516)
	at com.haulmont.cuba.gui.sys.UiControllerDependencyInjector.injectValues(UiControllerDependencyInjector.java:272)
	at com.haulmont.cuba.gui.sys.UiControllerDependencyInjector.inject(UiControllerDependencyInjector.java:112)
	at com.haulmont.cuba.web.sys.WebScreens.createScreen(WebScreens.java:241)
	at com.haulmont.cuba.web.sys.WebScreens.create(WebScreens.java:175)
	at com.haulmont.cuba.gui.Screens.create(Screens.java:70)
	at com.sjzl.uap.theme.lightgreen.web.screens.system.LightgreenMainScreen.openScreen(LightgreenMainScreen.java:870)
	at com.sjzl.uap.theme.lightgreen.web.screens.system.LightgreenMainScreen.lambda$addMenuItem$27(LightgreenMainScreen.java:824)
	at com.haulmont.cuba.web.gui.components.mainwindow.WebAppMenu$MenuItemImpl.menuSelected(WebAppMenu.java:435)
	at com.vaadin.ui.MenuBar.changeVariables(MenuBar.java:225)
	at com.vaadin.server.communication.ServerRpcHandler.changeVariables(ServerRpcHandler.java:611)
	at com.vaadin.server.communication.ServerRpcHandler.handleInvocation(ServerRpcHandler.java:457)
	at com.vaadin.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:400)
	at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:260)
	at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:82)
	at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:40)
	at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1577)
	at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:425)
	at com.haulmont.cuba.web.sys.CubaApplicationServlet.serviceAppRequest(CubaApplicationServlet.java:329)
	at com.haulmont.cuba.web.sys.CubaApplicationServlet.service(CubaApplicationServlet.java:215)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.sjzl.uap.web.sys.UapSecurityFilter.doFilter(UapSecurityFilter.java:54)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:107)
	at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:73)
	at com.haulmont.cuba.web.sys.CubaHttpFilter.doFilter(CubaHttpFilter.java:128)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:836)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1747)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:748)

直接修改的 build.gradle 文件?看上去是漏改了文件。用 Studio 添加一个市场上的应用组件,可以看到需要修改下面这些文件:
image

我列一下我觉得相关的地方:

app-component.xml:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<app-component xmlns="http://schemas.haulmont.com/cuba/app-component.xsd"
               dependsOn="com.haulmont.charts, com.haulmont.cuba, com.haulmont.addon.restapi, com.sjzl.uap">

    <module name="global" blocks="*">
        <artifact name="saftyedutrain-global" appJar="true"/>

        <property name="cuba.persistenceConfig" value="+impc/aj/saftyedutrain/persistence.xml"/>
        <property name="cuba.metadataConfig" value="+impc/aj/saftyedutrain/metadata.xml"/>
        <property name="cuba.viewsConfig" value="+impc/aj/saftyedutrain/views.xml"/>
    </module>
    <module name="core" dependsOn="global" blocks="core">
        <artifact name="saftyedutrain-core" appJar="true"/>
        <artifact name="saftyedutrain-core" classifier="db" ext="zip" configuration="dbscripts"/>

        <property name="cuba.springContextConfig" value="+impc/aj/saftyedutrain/spring.xml"/>
        <property name="cuba.mainMessagePack" value="+impc.aj.saftyedutrain.core"/>
    </module>
    <module name="web" dependsOn="global" blocks="web">
        <artifact name="saftyedutrain-web" appJar="true"/>
        <artifact name="saftyedutrain-web" classifier="web" ext="zip" configuration="webcontent"/>

        <property name="cuba.springContextConfig" value="+impc/aj/saftyedutrain/web-spring.xml"/>
        <property name="cuba.dispatcherSpringContextConfig" value="+impc/aj/saftyedutrain/web-dispatcher-spring.xml"/>
        <property name="cuba.rest.servicesConfig" value="+impc/aj/saftyedutrain/rest-services.xml"/>
        <property name="cuba.rest.queriesConfig" value="+impc/aj/saftyedutrain/rest-queries.xml"/>
        <property name="cuba.windowConfig" value="+impc/aj/saftyedutrain/web-screens.xml"/>
        <property name="cuba.menuConfig" value="+impc/aj/saftyedutrain/web-menu.xml"/>
        <property name="cuba.permissionConfig" value="+impc/aj/saftyedutrain/web-permissions.xml"/>
        <property name="cuba.mainMessagePack" value="+impc.aj.saftyedutrain.web"/>
    </module>
</app-component>

build.gradle:

cuba {
    uploadRepository {
        url = 'http://39.98.229.251:8090/nexus/content/repositories/aj_saftyedutrain_snapshot/'
        user = 'deployment'
        password = 'deployment123'
    }
    artifact {
        group = 'impc.aj.saftyedutrain'
        version = '0.2.1'
        isSnapshot = true
    }
    tomcat {
        dir = "$project.rootDir/deploy/tomcat"
    }
}

web.xml中需要修改哪些内容呢?

组件化后是否重新生成了组件描述?
image

重新生成了:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<app-component xmlns="http://schemas.haulmont.com/cuba/app-component.xsd"
               dependsOn="impc.aj.saftyfaultmgt, impc.aj.saftyriskmgt, impc.aj.jobplanmgt, com.haulmont.cuba, com.haulmont.addon.restapi, impc.aj.saftyedutrain, impc.aj.generalbizmgt, impc.aj.saftyhiddenperilmgt, com.sjzl.uap">

    <module name="global" blocks="*">
        <artifact name="ajyth-global" appJar="true"/>

        <property name="cuba.persistenceConfig" value="+impc/aj/ajyth/persistence.xml"/>
        <property name="cuba.metadataConfig" value="+impc/aj/ajyth/metadata.xml"/>
        <property name="cuba.viewsConfig" value="+impc/aj/ajyth/views.xml"/>
    </module>
    <module name="core" dependsOn="global" blocks="core">
        <artifact name="ajyth-core" appJar="true"/>
        <artifact name="ajyth-core" classifier="db" ext="zip" configuration="dbscripts"/>

        <property name="cuba.springContextConfig" value="+impc/aj/ajyth/spring.xml"/>
        <property name="cuba.mainMessagePack" value="+impc.aj.ajyth.core"/>
    </module>
    <module name="web" dependsOn="global" blocks="web">
        <artifact name="ajyth-web" appJar="true"/>
        <artifact name="ajyth-web" classifier="web" ext="zip" configuration="webcontent"/>

        <property name="cuba.springContextConfig" value="+impc/aj/ajyth/web-spring.xml"/>
        <property name="cuba.dispatcherSpringContextConfig" value="+impc/aj/ajyth/web-dispatcher-spring.xml"/>
        <property name="cuba.windowConfig" value="+impc/aj/ajyth/web-screens.xml"/>
        <property name="cuba.menuConfig" value="+impc/aj/ajyth/web-menu.xml"/>
        <property name="cuba.permissionConfig" value="+impc/aj/ajyth/web-permissions.xml"/>
        <property name="cuba.mainMessagePack" value="+impc.aj.ajyth.web"/>
    </module>
</app-component>

如果手工安装组件,需要修改 web.xml和build.gradle。建议使用Studio来安装。

都修改了:
build.gradle:

dependencies {
    appComponent("com.haulmont.cuba:cuba-global:$cubaVersion")
    appComponent('com.sjzl.uap:uap-global:0.2.27')
//    appComponent('impc.aj.qualityeventmgt:qualityeventmgt-global:0.1-SNAPSHOT')
    appComponent('impc.aj.saftyfaultmgt:saftyfaultmgt-global:0.1-SNAPSHOT')
    appComponent('impc.aj.saftyedutrain:saftyedutrain-global:0.2.1-SNAPSHOT')
    appComponent('impc.aj.saftyriskmgt:saftyriskmgt-global:0.1-SNAPSHOT')
    appComponent('impc.aj.generalbizmgt:generalbizmgt-global:0.1-SNAPSHOT')
    appComponent('impc.aj.saftyhiddenperilmgt:saftyhiddenperilmgt-global:0.1-SNAPSHOT')
    appComponent('impc.aj.jobplanmgt:jobplanmgt-global:0.1-SNAPSHOT')
    appComponent('com.haulmont.addon.restapi:restapi-global:7.1.0')
}

两个web.xml:

<!--Application components-->
    <context-param>
        <param-name>appComponents</param-name>
        <param-value>com.haulmont.cuba com.sjzl.uap impc.aj.saftyfaultmgt impc.aj.saftyedutrain
            impc.aj.saftyriskmgt impc.aj.generalbizmgt impc.aj.saftyhiddenperilmgt impc.aj.jobplanmgt</param-value>
    </context-param>

前几天的时候还没出现这个问题,近两天突然出现组件化后的bean全部找不到。您那边有什么排查思路吗?

主要是包名要同步调整,在组件项目中检查以下位置的包名是否对对应上:

  1. 各模块的 properties 文件中与包名相关的属性值是否同步修改了,比如,
    cuba.springContextConfig
    cuba.persistenceConfig
  2. 组件描述中包名相关的属性值是否同步修改, 比如:
    <property name="cuba.springContextConfig" value="+com/skd/labour/spring.xml"/>
  1. 各模块的 properties 文件中与包名相关的属性值已同步修改,是web-app.properties和app.properties文件吧,这两个文件原有内容没有修改过,只是在后面加的其他配置
    cuba.springContextConfig
    cuba.persistenceConfig
  2. 组件描述中包名相关的属性值也已同步修改, 参考上面我发的第一个app-component.xml,是其中一个子模块的配置

web-app.properties 、 app.properties 文件中这个属性配置的什么?
cuba.springContextConfig

web-app:cuba.springContextConfig = +impc/aj/saftyedutrain/web-spring.xml
app:cuba.springContextConfig = +impc/aj/saftyedutrain/spring.xml

我们一共有6个需要组件化的子系统,经排查发现,引入前3个时都能正常使用,引入第4个后,会引起前三个中的bean也找不到

  1. 检查 spring 配置文件中的包扫描路径配置是否正确:
    context:component-scan base-package=“xxx.xx.xxx”/>
  2. 检查所有组件中的 cuba.springContextConfig 属性值是否以 + 开头

当主系统中只有 A B组件时,AB组件都正常,当添加了C组件后 AC正常 B出现Service丢失的情况,随后移除B并重新添加B,则C组件出现Service丢失,AB正常,由此推测BC组件有冲突,但是对比各种配置文件,均未发现相同的地方