转载请注明出处:http://blog.csdn.net/l1028386804/article/details/52594602

很显然,这种方法是很不可取的,因为Maven是用来团队合作,以及发布开源代码的。而使用本地jar包,则使得Maven丧失了这部分的优点。不 过,我遇到的问题是,我想学习Maven,然后我以前的项目,公司的项目都不是用Maven的。然后我想引用其中的一些jar包,特别是某些项目 build之后在dist文件夹下的包。所以,才想出了下面的法子。

我先在我的Maven项目下建立一个lib文件夹,把我要用到的jar包都放到里面去。然后在pom.xml里添加如下的内容:

  1. <dependency>
  2. <groupId>com.weiresearch</groupId>
  3. <artifactId>webharvest</artifactId>
  4. <version>1.0.0</version>
  5. <scope>system</scope>
  6. <systemPath>${project.basedir}/lib/webharvest.jar</systemPath>
  7. </dependency>

这里的groupId,artifactId,version都可以随便写。然后scope要写成system,systemPath就写为要引用的jar包路径。这里不知道能否批量导入,没测试过,不过貌似不可以。

但是,还有个麻烦问题,我把我的项目打包成war包的时候,它居然只有我写的代码,而不包括引用的jar包。这就很麻烦了,打包的war包就不能直接使用了。找来好久,终于找到原因了。首先是其他正常使用maven的包,如下:

  1. <dependency>
  2. <groupId>javax.servlet</groupId>
  3. <artifactId>servlet-api</artifactId>
  4. <version>2.5</version>
  5. <scope>provided</scope>
  6. </dependency>

这里引用的是servlet包,最重要的是scope这个字段,provided的意思,就是说这个jar包,在这个项目可能的运行环境里,都会提 供了的,所以就不用打包到war包里面了。因此,要使得war包里面包含servlet这个包,只要把scope这句给删除掉就可以了。

而上面利用system这个scope引入的webharvest包,同样也没有引入进去。看了下网上的评论,才说最好不要用system这个 scope。大概是说这个system指的是JDK里面会包含这个jar包吧。这个解决方法就麻烦人了,最后是看到了这个问答才解决了的:Maven 2 assembly with dependencies: jar under scope “system” not included ,解决方法如下:

  1. <plugin>
  2. <groupId>org.apache.maven.plugins</groupId>
  3. <artifactId>maven-war-plugin</artifactId>
  4. <configuration>
  5. <webResources>
  6. <resource>
  7. <directory>${project.basedir}/lib</directory>
  8. <targetPath>WEB-INF/lib</targetPath>
  9. <filtering>true</filtering>
  10. <includes>
  11. <include>**/*.jar</include>
  12. </includes> </resource>
  13. </webResources>
  14. </configuration>
  15. </plugin>

directory字段指向的是包含你所有要用jar包的目录

targetPath则是编译后要把这些jar包复制到的位置

下面的filtering就是只导入所有以jar为后缀的文件

通过上面的设置,就能把你要的jar包导入进去了

Maven之——使用本地jar包并打包进war包里面的方法的更多相关文章

  1. Maven引入本地Jar包并打包进War包中

    1.概述 在平时的开发中,有一些Jar包因为种种原因,在Maven的中央仓库中没有收录,所以就要使用本地引入的方式加入进来. 2. 拷贝至项目根目录 项目根目录即pom.xml文件所在的同级目录,可以 ...

  2. java-第三方包没有打进war包里面

    java-web的项目中引用第三方的jar包,在打成war包部署测试,出现报错,提示找不到引用的jar 解决方案: 1.在eclipse的项目--右键属性---deployment assembly- ...

  3. maven加载本地jar

    [问题描述] 由于对接公司外部产品,导致公司内网上的maven库中并不存在对应的SDK jar,因此,需要通过maven加载本地jar的方式来实现工程编译. [方法] 方法很简单, 1.在resour ...

  4. maven pom 引入本地jar包

    maven pom 引入本地jar包 在pom.xml同级目录下新建lib文件夹,并放入本地jar包. 配置Jar包的dependency,包括groupId,artifactId,version三个 ...

  5. maven这些工具负责创建项目,然后maven负责打包好war包扔进tomcat容器,tomcat容器接受的只是jar包

    maven这些工具负责创建项目,然后maven负责打包好war包扔进tomcat容器,tomcat容器接受的只是jar包 2.tomcat不管你什么编译的,也不管你开发工具是什么.Tomcat只接受w ...

  6. maven加载本地jar包到repository

    maven加载本地jar到repository 这是一个常见场景,此处以本地opencv jar文件导入repository为例 1.Ubuntu下 mvn install:install-file ...

  7. 怎么将maven项目打包成war包

    问题:我在eclipse上能运行,然后我想将这个maven项目打包成war然后放到另外一台机子上(其实是手动放在tomcat的webapp目录中),提供外部访问.现在问题是,一直maven项目打包一直 ...

  8. maven项目打包分析及打包后war包缺少配置文件报错的原因分析,使用progard混淆时配置分析

    1.maven打包: 一直以来我都没太注意过在myeclipse下使用run as来clean居然对项目的target目录没有进行操作,要让操作有效,需要进入到maven build...选项下,进行 ...

  9. 将java project打包成jar包,web project 打包成war包的几种演示 此博文包含图片

    转: http://blog.csdn.net/christine_ruan/article/details/7491559 http://developer.51cto.com/art/200907 ...

随机推荐

  1. hosts所在文件夹以及***

    hosts所在文件夹: Windows 系统hosts位于 C:\Windows\System32\drivers\etc\hosts Android(安卓)系统hosts位于 /etc/hosts ...

  2. SAP更改日志记录表

    CDHDR  更改日志表头 CDPOS  更改日志行项目 SAP中修改频率较低的定制表(T001等)一般都会有修改记录存在,查看一个表有没有修改记录可以在SE11中查看他的技术设置,如果其中的LOG ...

  3. 网页音乐播放器javascript实现,可以显示歌词

    可以显示歌词,但是歌词和歌曲都要实现自己下载下来.只能播放一首歌,歌词还得是lrc格式的代码写的很罗嗦,急切希望帮改改CSS的代码​1.代码:<html >    <head> ...

  4. Silverlight实用示例 - DataGrid行详细信息的绑定DataGrid.RowDetailsTemplate

    Silverlight实用示例 - DataGrid行详细信息的绑定DataGrid.RowDetailsTemplate 2012-12-28 21:04 来源:博客园 作者:chengxingli ...

  5. 并不对劲的DFT

    FFT是一个很多人选择背诵全文的算法. #include<algorithm> #include<cmath> #include<complex> #include ...

  6. 本地锁、redis分布式锁、zk分布式锁

    本地锁.redis分布式锁.zk分布式锁 https://www.cnblogs.com/yjq-code/p/dotnetlock.html 为什么要用锁? 大型站点在高并发的情况下,为了保持数据最 ...

  7. 【SDOI 2011】染色

    [题目链接] 点击打开链接 [算法] 树链剖分 [代码] 本题,笔者求最近公共祖先并没有用树链剖分“往上跳”的方式,而是用倍增法.笔者认为这样比较好写,代码可读性 比较高 此外,笔者的线段树并没有用懒 ...

  8. ThinkPHP3.2.3学习笔记3---视图

    一.说明 每个模块的模板文件是独立的,为了对模板文件更加有效的管理,ThinkPHP对模板文件进行目录划分,默认的模板文件定义规则是:视图目录/[模板主题/]控制器名/操作名+模板后缀 默认的视图目录 ...

  9. bzoj 2528: [Poi2011]Periodicity【kmp+构造】

    神仙构造,做不来做不来 详见:http://vfleaking.blog.163.com/blog/static/174807634201329104716122/ #include<iostr ...

  10. Spring boot下,集成任务调度中心(XXL-JOB)

    一.使用背景 目前项目中,采用的是微服务框架,由于在微服务中,存在需要定时的任务.但如果定时任务维护在每个微服务下,当微服务部署多个实例的情况下,会出现定事任务多次执行的情况.并且在解决问题的基础上, ...