大家都知道Maven的依赖是通过pom文件管理的,只要配置了<dependency>,Maven就会从本地仓库 -> 远程仓库 -> 中央仓库获取依赖的jar。
但是如果仓库中不存在某个jar,并且这个jar由某些组织自行维护,并不会上传到仓库,这种情况,该怎么处理呢?
解决方案是,在pom文件中配置:
<build> <pluginManagement> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <compilerArguments> <!-- 编译的时候引入lib-ext目录下的jar(不在仓库的第三方jar) --> <extdirs>lib-ext</extdirs> </compilerArguments> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <configuration> <webResources> <resource> <!-- lib-ext打包到WEB-INF/lib下 --> <directory>lib-ext</directory> <targetPath>WEB-INF/lib/</targetPath> <includes> <include>**/*.jar</include> </includes> </resource> </webResources> </configuration> </plugin> </plugins> </pluginManagement> </build>
这样,你只需要将jar放在lib-ext目录,编译的时候依然能到加载到lib-ext中jar的相关类,当前,lib-ext换成其他目录是一样的。