簡體   English   中英

是否必須僅在子模塊中添加 spring-boot-starter-* 依賴項?

[英]Mandatory to add spring-boot-starter-* dependencies in child module only?

我有一個父模塊 (A),它已經作為依賴包含/導入到子模塊 (B) 中。

模塊A。

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>*some-version*<version>
        </dependency>
<dependencies>

模塊B

<dependencies>
            <dependency>
                <groupId>com.xyz</groupId>
                <artifactId>module-A</artifactId>
                <version>*module-A-version*<version>
            </dependency>
<dependencies>

問題:編譯沒有錯誤,模塊B的war工件(B.war)創建成功。 但是當我部署模塊 B(即 B.war)時,它會因以下錯誤而失敗。

線程“main”中的異常 java.lang.NoClassDefFoundError: org/springframework/beans/factory/config/YamlProcessor at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.78241538286)在 java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 在 java.net.URLClassLoader.defineClass(URLClassLoader.java:467) 在 java.net.URLClassLoader.access$100(URL2439:net382484.868) .URLClassLoader$1.run(URLClassLoader.java:368) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:362) 在 java.security.AccessController.doPrivileged(本機方法) 在 java.net.LofinderURLClassLoad( .java888888888888java888888888888888888888888.LANG.CLASS.LOADER.LOADCLASS(classLoader.java888888888888888888888888888888888888888888年) 3246945888:357) 在 org.springframework.boot.env.YamlPropertySourceLoader.load(YamlPropertySourceLoader.java:57) 在 org.springframework.boot.env.PropertySourcesLoader.load(PropertySourcesLoader.java.bootg.context7) 在 org.springframework.boot.env.PropertySourcesLoader.load .config.ConfigFileApplicationListener$Loader.loadIntoGroup(ConfigFileApplicationListener.java:462) 在 org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.load(ConfigFileApplicationListener.java:449) 在 org.springframework.boot.context.config.ConfigFileApplicationListener $Loader.load(ConfigFileApplicationListener.java:374) 在 org.springframework.boot.context.config.ConfigFileApplicationListener.addPropertySources(ConfigFileApplicationListener.java:210) 在 org.springframework.boot.context.config.ConfigFileApplicationListener.postProcessEnvironment(ConfigFileApplicationListener.88941884) :179) 在 org.springframework.boot.context.config.ConfigFileApplicationListener.on ApplicationEnvironmentPreparedEvent(ConfigFileApplicationListener.java:166) at org.springframework.boot.context.config.ConfigFileApplicationListener.onApplicationEvent(ConfigFileApplicationListener.java:152) at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:163) at org .springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:136) 在 org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:119) 在 org.springframework.publishframework.boot.context (EventPublishingRunListener.java:111)在 org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:65)在 org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringAppl icationRunListeners.java:54) 在 org.springframework.boot.SpringApplication.doRun(SpringApplication.java:325) 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:305) 在 org.springframework.boot.SpringApplication.run (SpringApplication.java:1124) 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:1113) 在 com.propspace.intl.gateway.GatewayInternational.main(GatewayInternational.882132439458888:8213246945888:882) ClassNotFoundException: org.springframework.beans.factory.config.YamlProcessor 在 java.net.URLClassLoader.findClass(URLClassLoader.java:381) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:424) 在 sun.misc$.Launcher AppClassLoader.loadClass(Launcher.java:331) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:357)... 32 更多

是不是就像我們總是要在葉模塊中包含spring-boot-starter- * 而不能在一個共同的父模塊中定義?

在做了幾個關於 pom-starters 的 PoC 之后,確認只有deployable的服務應該在其pom.xml中定義相應的 pom-starters。

因此 w.r.t 上面的層次結構子B必須具有如下定義,

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>*some-version*<version>
        </dependency>
<dependencies>

Parent A可以包含任何其他不是 pom-starter 的公共依賴項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM