转载

Maven POM

   

POM 代表项目对象模型。它是工作在Maven的基本单位。这是一个XML文件。它始终驻留在该项目 pom.xml 基本目录。
POM 包含的项目使用Maven来构建该项目和各种配置的详细信息。
POM 也包含了目标和插件。在执行任务或目标时,Maven 会在当前目录中的POM。它读取POM,得到所需要的配置信息,然后执行的目标。部分的配置可以在POM使用如下:

  • project dependencies

  • plugins

  • goals

  • build profiles

  • project version

  • developers

  • mailing list

创建一个POM之前,我们应该先决定项目组(groupId),它的名字(artifactId)和它的版本,因为这些属性在仓库中的唯一标识项目的帮助。

例子POM

 <project xmlns="http://maven.apache.org/POM/4.0.0"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0    http://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <groupId>com.companyname.project-group</groupId>    <artifactId>project</artifactId>    <version>1.0</version> <project>

应当指出,应该有一个单一的POM文件为每个项目。

  • 所有的 POM 文件要求的项目元素和三个必填字段: groupId,artifactId,version。

  • 在库中的项目符号是:groupId:artifactId:version.

  • 根元素 pom.xml是项目,它有三个主要的子节点:

节点 描述
groupId This is an Id of project's group. This is generally unique amongst an organization or a project. For example, a banking group com.company.bank has all bank related projects.
artifactId This is an Id of the project.This is generally name of the project. For example, consumer-banking. Along with the groupId, the artifactId defines the artifact's location within the repository.
version This is the version of the project.Along with the groupId, It is used within an artifact's repository to separate versions from each other. For example: 

com.company.bank:consumer-banking:1.0

com.company.bank:consumer-banking:1.1.

超级POM

所有的POM继承自父类(尽管明确界定)。这个基础POM被称为超级POM,并包含继承默认情况下的值。 Maven使用有效的POM(超级POM加项目配置的配置)执行有关的目标。它可以帮助开发人员指定的最低配置的详细信息在pom.xml。虽然配置可以很容易被覆盖。 一个简单的方法来看看超级POM的默认配置是通过运行下面的命令:mvn help:effective-pom 创建一个pom.xml上的任何目录computer.Use的内容上面提到的例子POM。 在下面的例子中,我们已经创建了一个pom.xml在C:/MVN/项目文件夹中。 现在,打开命令控制台,进入该文件夹包含pom.xml 和执行以下mvn 命令。

 C:/MVN/project>mvn help:effective-pom 

Maven将开始处理,并显示有效的effective-pom。

 [INFO] Scanning for projects... [INFO] Searching repository for plugin with prefix: 'help'. [INFO] ------------------------------------------------------------------------ [INFO] Building Unnamed - com.companyname.project-group:project-name:jar:1.0 [INFO]    task-segment: [help:effective-pom] (aggregator-style) [INFO] ------------------------------------------------------------------------ [INFO] [help:effective-pom {execution: default-cli}] [INFO]  .....  [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: < 1 second [INFO] Finished at: Thu Jul 05 11:41:51 IST 2012 [INFO] Final Memory: 6M/15M [INFO] ------------------------------------------------------------------------ 

结果显示在控制台的有效POM,继承,插值之后,应用配置文件。

 <?xml version="1.0" encoding="UTF-8"?> <!-- ================================================================= --> <!--                                                                   --> <!-- Generated by Maven Help Plugin on 2012-07-05T11:41:51             --> <!-- See: http://maven.apache.org/plugins/maven-help-plugin/           --> <!--                                                                   --> <!-- ================================================================= --> <!-- ================================================================= --> <!--                                                                   --> <!-- Effective POM for project                                         --> <!-- 'com.companyname.project-group:project-name:jar:1.0'              --> <!--                                                                   --> <!-- ================================================================= --> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/ 2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 h ttp://maven.apache.org/xsd/maven-4.0.0.xsd">   <modelVersion>4.0.0</modelVersion>   <groupId>com.companyname.project-group</groupId>   <artifactId>project</artifactId>   <version>1.0</version>   <build>     <sourceDirectory>C:/MVN/project/src/main/java</sourceDirectory>     <scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>     <testSourceDirectory>C:/MVN/project/src/test/java</testSourceDirectory>     <outputDirectory>C:/MVN/project/target/classes</outputDirectory>     <testOutputDirectory>C:/MVN/project/target/test-classes</testOutputDirectory>     <resources>       <resource>         <mergeId>resource-0</mergeId>         <directory>C:/MVN/project/src/main/resources</directory>       </resource>     </resources>     <testResources>       <testResource>         <mergeId>resource-1</mergeId>         <directory>C:/MVN/project/src/test/resources</directory>       </testResource>     </testResources>     <directory>C:/MVN/project/target</directory>     <finalName>project-1.0</finalName>     <pluginManagement>       <plugins>         <plugin>           <artifactId>maven-antrun-plugin</artifactId>           <version>1.3</version>         </plugin>         <plugin>           <artifactId>maven-assembly-plugin</artifactId>           <version>2.2-beta-2</version>         </plugin>         <plugin>           <artifactId>maven-clean-plugin</artifactId>           <version>2.2</version>         </plugin>         <plugin>           <artifactId>maven-compiler-plugin</artifactId>           <version>2.0.2</version>         </plugin>         <plugin>           <artifactId>maven-dependency-plugin</artifactId>           <version>2.0</version>         </plugin>         <plugin>           <artifactId>maven-deploy-plugin</artifactId>           <version>2.4</version>         </plugin>         <plugin>           <artifactId>maven-ear-plugin</artifactId>           <version>2.3.1</version>         </plugin>         <plugin>           <artifactId>maven-ejb-plugin</artifactId>           <version>2.1</version>         </plugin>         <plugin>           <artifactId>maven-install-plugin</artifactId>           <version>2.2</version>         </plugin>         <plugin>           <artifactId>maven-jar-plugin</artifactId>           <version>2.2</version>         </plugin>         <plugin>           <artifactId>maven-javadoc-plugin</artifactId>           <version>2.5</version>         </plugin>         <plugin>           <artifactId>maven-plugin-plugin</artifactId>           <version>2.4.3</version>         </plugin>         <plugin>           <artifactId>maven-rar-plugin</artifactId>           <version>2.2</version>         </plugin>         <plugin>           <artifactId>maven-release-plugin</artifactId>           <version>2.0-beta-8</version>         </plugin>         <plugin>           <artifactId>maven-resources-plugin</artifactId>           <version>2.3</version>         </plugin>         <plugin>           <artifactId>maven-site-plugin</artifactId>           <version>2.0-beta-7</version>         </plugin>         <plugin>           <artifactId>maven-source-plugin</artifactId>           <version>2.0.4</version>         </plugin>         <plugin>           <artifactId>maven-surefire-plugin</artifactId>           <version>2.4.3</version>         </plugin>         <plugin>           <artifactId>maven-war-plugin</artifactId>           <version>2.1-alpha-2</version>         </plugin>       </plugins>     </pluginManagement>     <plugins>        <plugin>         <artifactId>maven-help-plugin</artifactId>         <version>2.1.1</version>       </plugin>     </plugins>   </build>   <repositories>     <repository>       <snapshots>         <enabled>false</enabled>       </snapshots>       <id>central</id>       <name>Maven Repository Switchboard</name>       <url>http://repo1.maven.org/maven2</url>     </repository>   </repositories>   <pluginRepositories>     <pluginRepository>       <releases>         <updatePolicy>never</updatePolicy>       </releases>       <snapshots>         <enabled>false</enabled>       </snapshots>       <id>central</id>       <name>Maven Plugin Repository</name>       <url>http://repo1.maven.org/maven2</url>     </pluginRepository>   </pluginRepositories>   <reporting>     <outputDirectory>C:/MVN/project/target/site</outputDirectory>   </reporting> </project> 

在上面的pom.xml中,可以看到默认的项目的源文件夹结构,输出目录,插件需要,资料库,报表目录,Maven将使用在执行预期的目标。

Maven pom.xml 无须手动写入。

Maven提供了大量的的原型插件创建项目,以创建项目结构和pom.xml

详细信息中提到的Maven插件和Maven创建项目部分

   
正文到此结束
Loading...