Maven POM Maven环境设置 Maven构建生命周期 POM代表 项目对象模型 。它是Maven的基本工作单位。它是一个XML文件,pom.xml保存在项目的基本目录中。 POM包含有关项目的信息以及Maven用于构建项目的各种配置细节。 POM还包含目标和插件。在执行任务或目标时,Maven将在当前目录中查找POM。它读取POM,获取所需的配置信息,然后执行目标。一些可以在POM中指定的配置如下 项目依赖关系 插件 目标 编译配置 项目版本 开发者 邮件列表 在创建POM之前,我们应该首先确定项目 组Id (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的最低要求 序号 节点和说明 1 项目根目录 这是项目根标签。您需要指定基本的模式设置,例如apache模式和w3.org规范。 2 模型版本 模型版本应该是4.0.0。 3 groupId 这是项目组的ID。这在组织或项目中通常是独一无二的。例如,一家银行集团com.company.bank拥有所有银行相关项目。 4 artifactId 这是该项目的标识。这通常是项目的名称。例如,消费者银行业务。与groupId一起,artifactId定义存储库中工件的位置。 5 版本 这是该项目的版本。与groupId一起,它在工件的存储库中用于将各个版本彼此分开。例如 com.company.bank:consumer-banking:1.0 com.company.bank:consumer-banking:1.1 Super POM Super POM是Maven的默认POM。所有的POM都从父类或默认继承(尽管显式定义或不)。这个基本的POM被称为 超级POM ,并且包含默认继承的值。 Maven使用有效的POM(来自super pom的配置加上项目配置)执行相关目标。它可以帮助开发人员在他/她的pom.xml中指定最低配置细节。虽然配置可以轻松覆盖。 查看超级POM默认配置的简单方法是运行以下命令: mvn help:effective-pom 在计算机上的任何目录中创建一个pom.xml。使用上面提到的示例pom的内容。 在下面的例子中,我们在c:\MVN\project文件夹中创建了一个pom.xml文件。 现在打开命令控制台,转到包含pom.xml的文件夹并执行以下 mvn 命令。 C:\MVN\project>mvn help:effective-pom Maven将开始处理并显示有效的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 2015-04-09T11: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 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> <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构建生命周期