IDEA Build got error: package org.springframework.web.servlet.config.annotation does not exist

When building project in IDEA 2021.1, following error appeared:

package org.springframework.web.servlet.config.annotation does not exist

And the weired thing is that running mvn compile in command line works well, but run Build in IDEA will got this error.

The building process works before, but recently I modified source code of one of my dependency JHCommonLibrary which is depending on spring-webmvc

I remove spring-webmvc dependency from JHCommonLibrary but it didn't work.

Then add spring-webmvc explicitly, and it didn't work as well.

Solution

Finally, I move JHCommonLibrary to end of <dependencies>, now it works. Or adding spring-webmvc dependency before JHCommonLibrary also works.

(I need to state again, this issue only appeared in IDEA but not appear if running mvn compile in command line. So it's likey a bug in IDEA)

mvn add jar file to local repository

Did you ever want to put a local jar library file into your deployment jar file, but the library file is not available on public repository (or you don't want to put it on public repository?)

One possible method is to add maven dependency with scope and systemPath property

<dependency>
<groupId>aeszip</groupId>
<artifactId>aeszip</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/WebContent/WEB-INF/lib/aeszip.jar</systemPath>
</dependency>

But using scope and systemPath has a problem, that is when I run mvn package to build a package, the dependency will not be included, so running the application on another machine will always complain NoClassDefFoundError or ClassNotFoundException

So a better method is to use mvn install:install-file plugin

This will add AesZip.jar to your local maven repository. When running mvn package to create package, the dependent libraries will be included into the generated package