Maven问题记录
Q: 我执行tomcat7插件相关的操作时,怎么一直报错,提示找不到tomcat7插件?
A: 这个是因为tomcat7插件的groupId不在maven默认的pluginGroups中,解决方法有一下几种:
1. 在一个配置了tomcat7插件的项目目录下执行,因为配置了tomcat7插件,所有maven就知道了其groupId,所以就能够找到了
2. 使用带groupId的全限定名,例子如下:
mvn help:describe -Dplugin=org.apache.tomcat.maven:tomcat7-maven-plugin:2.2
由于在指定plugin的时候,写了完整的groupId,所以这样也是可以的
3. 修改一下mvn的配置文件settings.xml, 在<pluginGroups> 这个配置项下面,增加一个<pluginGroup>配置即可
<pluginGroups>
<pluginGroup>org.apache.tomcat.maven</pluginGroup>
</pluginGroups>
想了解更多为什么会这样,请参考
http://maven.apache.org/guides/introduction/introduction-to-plugin-prefix-mapping.html
注意:执行mvn tomcat7:run 时 要放在项目的目录下执行 例如Restaurant 的目录下执行
Q: 我在实战maven管理多项目的时候,执行mvn tomcat7:run 报了错误,错误信息是“The POM for com.netease.restaurant:Kitchen:jar:1.0.0-SNAPSHOT is missing, no dependency information available”,怎么办?
A: 在多项目管理实战中的这个例子中,Restaurant对Kitchen有依赖,如果你直接在Restaurant这个项目中执行 mvn tomcat7:run的话,由于此时Kitchen还没有放到本地仓库中,因此Restaurant找不到这个Kitchen的依赖,所以报错了。解决方案如下:
-
可以在Kitchen这个项目中执行 mvn install,此时会把这个Kitchen项目安装maven的本地仓库,然后再在Restaurant项目中引用,就能找到了
-
直接在顶层的 restaurant-parent 这个项目下先执行 mvn install,这样的话,顶层的这个父项目会把所有的子项目都安装到本地仓库,并维护好依赖关系