[size=medium][color=red]17. maven不只是用来构建java项目,也可以构建其它语言编写的项目P152[/color][/size]
[size=medium][color=red]18. 超级POM[/color][/size]
[color=blue] 所有的Maven项目的POM都扩展自超级POM。超级POM定义了一组被所有项目共享的默认设置。它是Maven安装的一部分,可以在/usr/local/maven/lib中的maven-2.0.9-uber.jar文件中找到。P155
这个超级POM定义了一些由所有项目继承的标准配置变量。对这些变量的简单解释如下:
(1)默认的超级POM定义了一个单独的远程Maven仓库,ID为central。这是所有Maven客户端默认配置访问的中央Maven仓库。该配置可以通过一个自定义的settings.xml文件来覆盖。注意这个默认的超级POM关闭了从中央Maven仓库下载snapshot构件的功能。如果需要使用一个snapshot仓库,就要在pom.xml或者settings.xml中自定义仓库设置。[/color]
[color=blue] (2)中央Maven仓库同时也包含Maven插件。默认的插件仓库就是这个中央仓库。Snapshot被关闭了,而且更新策略被设置成了“从不”,这意味着Maven将永远不会自动更新一个插件,即使新版本的插件发布了。[/color]
[color=blue] (3)build元素设置Maven标准目录布局中那些目录的默认值。[/color]
[color=blue](4)从Maven 2.0.9开始,超级POM为核心插件提供了默认版本。这么做是为那些没有在它们POM中指定插件版本的用户提供一些稳定性.[/color]
[align=center][img]http://dl.iteye.com/upload/attachment/148330/e0009586-dc2b-3bde-b82b-4b6feef28bd8.jpg[/img][/align]
[size=medium][color=red]19. 有效POM(配置生效规则)[/color][/size]
[color=blue] Maven开始于超级POM,然后使用一个或多个父POM覆盖默认配置,最后使用当前项目的POM来覆盖之前生成的配置结果。最后得到了一个混合了各个POM配置的有效POM。如果想要查看项目的有效POM,需要运行Maven Help插件的effective-pom目标(参见1.help插件)[/color]
[size=medium][color=red]18. 超级POM[/color][/size]
[color=blue] 所有的Maven项目的POM都扩展自超级POM。超级POM定义了一组被所有项目共享的默认设置。它是Maven安装的一部分,可以在/usr/local/maven/lib中的maven-2.0.9-uber.jar文件中找到。P155
这个超级POM定义了一些由所有项目继承的标准配置变量。对这些变量的简单解释如下:
(1)默认的超级POM定义了一个单独的远程Maven仓库,ID为central。这是所有Maven客户端默认配置访问的中央Maven仓库。该配置可以通过一个自定义的settings.xml文件来覆盖。注意这个默认的超级POM关闭了从中央Maven仓库下载snapshot构件的功能。如果需要使用一个snapshot仓库,就要在pom.xml或者settings.xml中自定义仓库设置。[/color]
<repositories>
<repository>
<id>central</id>
<name>Maven Repository Switchboard</name>
<layout>default</layout>
<url>http://repo1.maven.org/maven2</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
[color=blue] (2)中央Maven仓库同时也包含Maven插件。默认的插件仓库就是这个中央仓库。Snapshot被关闭了,而且更新策略被设置成了“从不”,这意味着Maven将永远不会自动更新一个插件,即使新版本的插件发布了。[/color]
<pluginRepositories>
<pluginRepository>
<id>central</id>
<name>Maven Plugin Repository</name>
<url>http://repo1.maven.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
<releases>
<updatePolicy>never</updatePolicy>
</releases>
</pluginRepository>
</pluginRepositories>
[color=blue] (3)build元素设置Maven标准目录布局中那些目录的默认值。[/color]
<build>
<directory>target</directory>
<outputDirectory>target/classes</outputDirectory>
<finalName>${project.artifactId}-${project.version}</finalName>
<testOutputDirectory>target/test-classes</testOutputDirectory>
<sourceDirectory>src/main/java</sourceDirectory>
<scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>
<testSourceDirectory>src/test/java</testSourceDirectory>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
<testResources>
<testResource>
<directory>src/test/resources</directory>
</testResource>
</testResources>
。。。。
</build>
[color=blue](4)从Maven 2.0.9开始,超级POM为核心插件提供了默认版本。这么做是为那些没有在它们POM中指定插件版本的用户提供一些稳定性.[/color]
[align=center][img]http://dl.iteye.com/upload/attachment/148330/e0009586-dc2b-3bde-b82b-4b6feef28bd8.jpg[/img][/align]
[size=medium][color=red]19. 有效POM(配置生效规则)[/color][/size]
[color=blue] Maven开始于超级POM,然后使用一个或多个父POM覆盖默认配置,最后使用当前项目的POM来覆盖之前生成的配置结果。最后得到了一个混合了各个POM配置的有效POM。如果想要查看项目的有效POM,需要运行Maven Help插件的effective-pom目标(参见1.help插件)[/color]