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.同时,也不利于项目的移植和协同开发