错误overlay id is not a dependency project原因分析

本文解决Maven WAR插件配置问题,探讨<overlay>元素使用方法,介绍maven-war-plugin特性如classes打包选项,并分享自定义插件开发启示。

之前按下面配置,一直会报标题中错误,有的同学说改成<overlay><id></id></overlay>就可以了,然而我这里竟然错误依旧。

奇怪的是间隔了一段时间之后,现在无论哪种方式都不报错误了。

配置如下

1.

<dependency>
<groupId>cn.bsdn</groupId>
<artifactId>yandz-cn-web</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>war</type>
</dependency>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.5</version>
<configuration>
<encoding>${maven.compiler.encoding}</encoding>
<source>1.6</source>
<target>1.6</target>
<overlays>
<overlay>
<groupId>cn.bsdn</groupId>
<artifactId>yandz-cn-web</artifactId>
</overlay>
</overlays>

</plugin>

但是在报错时候,查看了project的properties下Deployment Assembly选项中可以看到项目yandz-cn-web,但是在Project References选项中没有看到yandz-cn-web被勾选。

目前:Deployment Assembly选项和Project References选项中都可以看到对项目yandz-cn-web的依赖。

结论:maven-war-plugin其实仍然是在原本eclipse项目依赖理论基础上实现的,只不过插件默认帮你完成了项目之间的依赖操作而已,期初的报错应该是插件下载问题导致的。

 2.其它,顺便解释下下面两个属性用途

2.1)<attachClasses>true</attachClasses>在使用maven-war-plugin打包是会将classes中的文件打包成jar并发布到maven库中,生成的war和不配置该属性时一样。

2.2)<archiveClasses>true</archiveClasses>在使用maven-war-plugin打包是会将classes中的文件打包成jar不发布maven库,但会放入生成war包的lib目录中,当然classes就会为空了。

2.3)  <overlay><id>yandz-cn-web</id></overlay>作用是将依赖的war类型项目中内容 生成到所打的war包中,项目中的classes文件会以jar形式引入,其它内容会合并到war目录。

3.maven插件作用觉悟

很早就知道maven有运行周期、阶段Phase、目标goal、插件plugin等概念,maven支持自定义插件开发,也已经很多插件,也用过一些插件比如生成源码包,也看到过别人写的插件源码,但一直对开发插件懵懵懂懂,主要也没有这方面的需求引起思考,刚才又好奇这个问题,到底开发那么多插件有啥用呢,于是乎又看了下网上插件入门的helloword的例子,突然明白原来自定义插件就是为了在maven执行某些命令时 做一些自己现有插件不能做到而又想做的事情,比如在用maven-war-plugin可以生成war,如果我想在生成war中额外添加一个特殊的动态文件,并且是该插件正常执行时不能产生的文件,那么就可以通过自定义插件实现了。

转载于:https://www.cnblogs.com/navigate/p/5559547.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值