当前位置:首页 > Maven课程3
请将以下代码拷入你新创建maven项目的pom.xml中,看看执行效果:(操作)
< groupId> org.apache.maven.plugins < artifactId> maven-compiler- plugin artifactId> < version> 3.1 < configuration>
< source> 1.7 < target> 1.7 < encoding> UTF-8 configuration> plugin> < plugin>
< groupId> org.apache.maven.plugins < artifactId> maven-source- plugin artifactId> < version> 2.1.1 < executions> < execution>
< id> attach-sources < phase> verify
< goals>
< goal> jar-no-fork goals> execution> executions> plugin>
在POM的build元素下的plugins子元素中声明插件的使用。上述配置,首先是基本的插件坐标声明,对于自定义绑定的插件,应该声明一个非快照版本(这个会写到使用规范中),避免由于插件版本变化造成构建不稳定性。除了插件坐标声明外,还有插件执行配置。executions下每个execution子元素可以用来配置执行一个任务。以上配置了一个id为attach-sources的任务,通过phase配置,将其绑定到verify生命周期阶段上,再通过goals配置指定要执行的插件目标。至此,自定义插件绑定完成。运行mvn verify就能看到如下输出:
(4)插件的参数配置(在plugin元素内使用configuration) a.配置插件支持Java5(/Java7)
b.配置compile阶段运行指定的java类(含main方法的类) < plugin>
< groupId> org.codehaus.mojo
< artifactId> exec- maven-plugin < version> 1.3.1
< executions> < execution >
< phase> compile
< goals>
< goal> java goals>
< configuration>
< mainClass> com.csot.mvnbook.mvnbookhellowrold.App
configuration> execution> executions> plugin>
c.配置在compile阶段执行生成项目源码包
(5)插件管理
优点:(1)简化子模块POM的配置。 (2)实现插件版本的统一管理,避免潜在的插件不一致或者不稳定的问题,也便于维护。
Maven提供了pluginManagement元素帮助管理插件。在该元素中配置的插件不会造成实际的插件调用行为,当POM中配置了真正的plugin元素,并且其groupId和artifactId与
pluginManagement中配置的插件匹配时,pluginManagement的配置才会影响实际的插件行为。
使用场景:如配置maven-source-plugin插件生成项目源码包。如果一个项目中有n个子模块,并且很多模块都需要得到模块的源码包,如果没有插件管理,就需要为所有需要得到源码的模块重复类似的配置,这时最好的方法是在父POM中使用pluginManagement配置插件,然后在子模块中声明使用插件即可(只需使用
当项目中的多个模块有同样的插件配置时,应当将配置移到父POM的pluginManagement元素中。即使各个模块对于同一插件的具体配置不尽相同,也应当使用父POM的pluginManagement元素统一声明插件的版本。(写到规范中)。(可以)要求将所有用到的插件的版本在父POM的pluginManagement元素中声明,子模块使用插件时不配置版本信息。这么做可以统一项目的插件版本,避免潜在的插件不一致或者不稳定的问题,也更易于维护。
(6)插件仓库(7.8.1 P129)(
所有的构件(如插件构件与依赖构件)基于坐标存储在Maven仓库中,在需要的时候,Maven会从本地仓库寻找插件,如果不存在,则从远程仓库查找,找到插件之后,再下载到本地仓库使用。 需要注意的是,Maven会区别对待依赖的远程仓库(repository,对依赖有效果)和插件的远程仓库(pluginRepository),当Maven需要的插件在本地仓库不存在时,它不会去配置的远程仓库(repository)查找。
Maven内置了如下的插件远程仓库配置:
三、依赖管理
依赖配置:
共分享92篇相关文档