Erro ‘cannot find symbol’ em projeto Maven multi-module devido a configuração do Spring Boot Maven Plugin em módulos como biblioteca


Em um projeto Maven multi-módulo, o módulo “commons”, que contém apenas DTOs (Data Transfer Objects) comuns entre microsserviços, estava sendo importado pelo módulo “core”. No entanto, durante a compilação, ocorria o erro “cannot find symbol”, apesar do IntelliJ reconhecer corretamente os imports do módulo “commons” durante o desenvolvimento.

Causa do Problema

O erro estava relacionado à configuração do spring-boot-maven-plugin no pom.xml do módulo “commons”. Esse plugin, por padrão, empacota o projeto como um JAR executável (fat jar), o que não é apropriado para uma biblioteca que deve ser usada como dependência em outros módulos. Isso gerava incompatibilidades no processo de build.

Solução

Para resolver o problema, foi necessário ajustar o spring-boot-maven-plugin no pom.xml do módulo “commons” para evitar a criação de um JAR executável. A solução envolveu a seguinte configuração:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>repackage</id>
            <goals>
                <goal>repackage</goal>
            </goals>
            <configuration>
                <attach>false</attach>
            </configuration>
        </execution>
    </executions>
</plugin>

Essa configuração instrui o Maven a empacotar apenas o JAR original, sem criar um JAR executável.

Além disso, o spring-boot-maven-plugin foi removido do pom.xml do módulo “commons”, pois não é necessário para projetos de bibliotecas.

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
</plugin>

O problema estava na configuração incorreta do build no módulo “commons”, que gerava um JAR executável em vez de uma biblioteca. Após ajustar o spring-boot-maven-plugin, o erro foi resolvido, e o módulo “core” pôde usar corretamente as classes do “commons” durante a compilação.

Referências