1.问题描述:
(1)有个JavaMavenWeb项目,需要引入一个第三方包gdal.jar,但是这个包是自己打包的,在maven中央库里面找不到该包
(2)因此采用传统的方式,将这个包拷贝到:项目名称\src\main\webapp\WEB-INF\lib的目录下
(3)然后通过config build path将该gdal.jar包引入到项目工程中
(4)对于传统java web项目,这么做当然没有问题
(5)对于maven项目,项目打包(mvn install)时就会报错,
(6)在项目调试时(debug on server)也会出现文件发布不全的问题:
<1>tomcat的webapp目录下有该项目
<2> 但是里面文件不全,通过web访问时就会404错误
2.问题解决:
(1)maven项目的jar包都是通过maven机制进行管理的
(2)将第三方依赖包加入JavaWebMaven项目的lib文件下
(3)同时将该包也是利用maven的方式引入项目中,解决方式有三种:
方式一:
<1>在pom文件中使用 maven-install-plugin 插件的方式
1.1.这种方式会在maven initialize阶段添加相应的jar包
<2>必须定义好需要安装 jar 包的路径
2.1.将所需要安装的jar包放置在项目根路径的某个文件夹内
2.2.这里放在src\main\webapp\WEB-INF\lib路径下
2.3.如果lib文件夹不存在就新建一个
2.4.并且将第三方jar包添加到config build中
<3>maven中有提供这样的配置,在pom文件中通过配置附加指定本地jar的路径即可完成maven打包功能
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
<compilerArguments>
<extdirs>src\main\webapp\WEB-INF\lib</extdirs>
</compilerArguments>
</configuration>
</plugin>
</plugins>
</build>
方式二:
<1>将gdal.jar包上传到公司的maven私服上,然后配置路径
<2>如果没有maven私服,可以直接通过文件方式引入该jar包,在pom.xml中添加该jar包的引用
<dependency>
<groupId>gdal</groupId>
<artifactId>gdal</artifactId>
<version>1.0.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/gdal.jar</systemPath>
</dependency>
方式三:
<1>将外部jar打入本地maven仓库
<2通过 Maven goal install:install-file 命令将jar包安装到本地仓库>
<3>cmd 进入jar包所在路径,执行以下命令:
mvn install:install-file
-Dfile=D:\pageTag.jar //自定义JAR包文件所在的路径
-DgroupId=com.hope.cloud
-DartifactId=cloud
-Dversion=1.0
-Dpackaging=jar
<3>引入依赖
<dependency>
<groupId>com.hope.cloud</groupId>
<artifactId>cloud</artifactId>
<version>1.0</version>
</dependency>
<4>这种添加本地依赖包的方式代价非常高。
1.因为它将依赖文件直接添加到了本地 maven 仓库中
2.如果有一天切换了本地仓库,那么必须重新安装一遍 jar 包
3.同时,也不利于项目的移植和协同开发