一尘不染

spring-boot-maven-plugin打破了兄弟模块的依赖关系

spring-boot

我有一个多模块的Maven设置。一个父模块,再加上两个子模块(子模块)A和B。模块B对A具有依赖性。但是,如果我在模块A中使用spring-boot-
maven-plugin,则编译依赖性不会得到解决。
,并且模块B的编译目标将引发“找不到符号”和“包装不存在”错误。如果我不使用该插件,则一切正常,但是我将无法在此项目中将其删除。

这是重现该问题的一种方法:

Parent pom.xml

<modelVersion>4.0.0</modelVersion>
<groupId>com.whatever</groupId>
<artifactId>theparent</artifactId>
<version>2.7.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
    <module>service</module>
    <module>serviceClient</module>
</modules>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.2.RELEASE</version>
</parent>

Module A

<modelVersion>4.0.0</modelVersion>
<artifactId>service</artifactId>
<packaging>jar</packaging>
<parent>
    <groupId>com.whatever</groupId>
    <artifactId>theparent</artifactId>
    <version>2.7.0-SNAPSHOT</version>
    <relativePath>../</relativePath>
</parent>

Module B

<modelVersion>4.0.0</modelVersion>
<artifactId>serviceClient</artifactId>
<parent>
    <groupId>com.whatever</groupId>
    <artifactId>theparent</artifactId>
    <version>2.7.0-SNAPSHOT</version>
    <relativePath>../</relativePath>
</parent>
<dependencies>
    <dependency>
        <groupId>com.whatever</groupId>
        <artifactId>service</artifactId>
        <version>2.7.0-SNAPSHOT</version>
    </dependency>
</dependencies>

现在,您要做的就是在模块A中拥有一个类,在模块B中拥有另一个类,该类导入并使用第一个类。通过在父模块级别运行’mvn clean
install’可以很好地进行编译。但是,一旦将此插件添加到模块A中:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <mainClass>com.whatever.Application</mainClass>
            </configuration>
        </plugin>
    </plugins>
</build>

,模块B无法再解析来自模块A的依赖关系,并且您将看到“包不存在”,“找不到符号”等消息,表明它无法从模块A中看到该类。

这是错误吗?谁能帮助我解决这个问题?


阅读 596

收藏
2020-05-30

共1个答案

一尘不染

希望这篇文章对您有所帮助。

2020-05-30