Maven项目中的jar管理

时间:2021-10-23 09:24:28

1、如何既依赖Maven管理的dependency,又依赖lib下的jar

有些项目的jar包不是在maven服务器上能够下载的,那么需要将这样的包放在项目的lib目录下,不过这样会导致maven打包时找不到包,报错。可以通过下面的配置解决这个问题:


<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>UTF-8</encoding>
<compilerArguments>
<extdirs>src\main\webapp\WEB-INF\lib</extdirs>
</compilerArguments>
</configuration>
</plugin>
</plugins>
<pluginManagement>
</build>
上面解决maven编译问题,下面还需要解决IntelliJ编译问题:


File > Project Structure > Libraries > New Project Library > ... > Attach Jar Directories


2、Maven webapp生成war包同时,将所有依赖jar生成到WEB-INF/lib

<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1</version>

<configuration>
<!-- 释放将项目的类文件打成jar到lib目录中。打成jar的好处是:只修改class时,可以只更新jar -->
<archiveClasses>true</archiveClasses>
<!-- <span>src/main/resources是默认的资源目录。
当archiveClasses=true时,resources中的文件资源会被打到jar中;
当archiveClasses=false时,resources中的文件资源在war的根目录。 -->
<webResources>
<resource>
<!-- config作为source folder,不会被打到jar中。 -->
<directory>src/main/config</direction>
<targetPath>WEB-INF/classes</targetPath>
<filtering>true</filtering>
</resource>
</webResources>

<!-- 将abc.jar排除
<packagingExcludes>WEB-INF/lib/abc.jar</packagingExcludes>
-->
</configuration>

</plugin>
</plugins>
</pluginManagement>
</build>