maven pom编写

简介: 1.<parent> Maven提供了继承的机制来管理这些共同的依赖。你可以编写一个pom.xml文件作为父级pom配置,各个模块在自己的pom.xml中继承父级pom文件,就像上面的示例那样,使用<parent>元素标识继承的父级pom文件。1.1父模块pom文件的编写: 1、父级pom文件的packaging必须是pom,它需要作为pom文件发布以便子po

1.<parent>

Maven提供了继承的机制来管理这些共同的依赖。你可以编写一个pom.xml文件作为父级pom配置,各个模块在自己的pom.xml中继承父级pom文件,就像上面的示例那样,使用<parent>元素标识继承的父级pom文件。

1.1父模块pom文件的编写:

1、父级pom文件的packaging必须是pom,它需要作为pom文件发布以便子pom继承。
2、在父级pom可以使用 <dependencyManagement>配置依赖管理。在<dependencyManagement>下的依赖声明不会引入实际依赖,但是可以让子模块继承依赖配置。
3、在父级pom中可以使用<pluginManagement>配置插件管理。作用和<dependencyManagement>类似,只不过一个管理依赖一个管理插件。
 

1.2子模块pom文件的编写:

1、需要使用<parent>元素标识继承的父pom。可以使用<relativePath>标识父级pom的物理路径,子模块会直接从指定的路径加载父级pom文件,未指定该元素时,子模块将根据父级pom的坐标从Maven仓库查找。

2、子模块pom可以继承父级pom中除artifactId之外的大部分配置,因此子模块的groupId、version以及依赖的version都可以省略。

3、子模块pom中的<dependency>可以只写groupId与artifactId,不再写版本号。

例:

<!--	父级pom-->
	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.glassfish.jersey.containers</groupId>
				<artifactId>jersey-container-servlet</artifactId>
				<version>2.5</version>
			</dependency>
			<dependency>
				<groupId>org.glassfish.jersey.media</groupId>
				<artifactId>jersey-media-json-jackson</artifactId>
				<version>2.5</version>
			</dependency>
		</dependencies>
	</dependencyManagement>
<modules>
<module>../GraduationProjectCollect</module>
<module>../GraduationProjectTrain</module>
<module>../GraduationProjectUse</module>
</modules>

(分割行)

	<!--子级pom,不需要写<groupId>,<version>与<dependency>中的<version>-->
	<parent>
		<groupId>com.likeyichu</groupId>
		<artifactId>GraduationProjectAll</artifactId>
		<version>1.0</version>
	</parent>
	<artifactId>GraduationProjectCollect</artifactId>
	<packaging>war</packaging>
	<name>GraduationProjectCollect</name>
	<description>GraduationProjectCollect-数据收集部分</description>

	<dependencies>
		<dependency>
			<groupId>org.glassfish.jersey.containers</groupId>
			<artifactId>jersey-container-servlet</artifactId>
		</dependency>
		<dependency>
			<groupId>org.glassfish.jersey.media</groupId>
			<artifactId>jersey-media-json-jackson</artifactId>
		</dependency>
	<dependencies>



2.<dependency>

指定依赖

	<!-- pom.xml的一部分  可以设置property,然后在后面引用。-->
	<properties>
	        <spring.version>4.0.4</spring.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>${spring.version}</version>
		</dependency>
	</dependencies>


3.<module>

一个项目由多个子项目组成时,可使用maven的module组织形式。
 <!--总项目的pom文件打包形式必须为pom形式-->
 <packaging>pom</packaging>
 <!--  在<modules>标签中配置<module>标签-->
  <modules>
  	<module>../GraduationProjectCollect</module>
  	<module>../GraduationProjectTrain</module>
  	<module>../GraduationProjectUse</module>
  </modules>

4.<exclusion>

可用于解决多个依赖中的冲突。比如自己的项目依赖了A与B,A依赖了

eclipse中图形化查看依赖传递,见图1.


图1  可视化的maven依赖关系传递

从图中可以看出,简单的版本冲突构建时是没有多大问题的,会忽略高版本的jar。

<exclusion>标签通常用于<dependency>标签内部,一个例子见下:

	<dependency>
			<groupId>com.ctrip.framework.realtime</groupId>
			<artifactId>muise-storm-core</artifactId>
			<version>0.2</version>
			<exclusions>
				<exclusion>
					<groupId>jdk.tools</groupId>
					<artifactId>jdk.tools</artifactId>
				</exclusion>
				<exclusion>
					<artifactId>log4j-over-slf4j</artifactId>
					<groupId>org.slf4j</groupId>
				</exclusion>
			</exclusions>
	</dependency>


5.<build>

5.1 实现配置文件的变量替换

场景:不同环境的数据库连接串、用户名不一样,构建项目时希望能做到自动替换。

pom文件所在目录下有conf.properties文件,内容为:
userName=XiaoMing
在src/main/sources/目录下有db.properties文件,内容为:
user=${userName}
执行后,效果为
db.properties文件,内容为user=XiaoMing

相应的pom内容片断见下:

<build>
	<filters>  
		<!-- 是以该pom文件路径作为工作目录 -->  
		<filter>conf.properties</filter>  
	</filters> 
	
	<!--指定资源文件位置-->
	<resources>
		<resource>
			<directory>src/main/resources</directory>
			<!--可以在此配置过滤文件  -->
			<includes>
				<include>*.xml</include>
				<include>*.properties</include>
			</includes>
			<!--开启filtering功能  -->
			<filtering>true</filtering>
		</resource>
	</resources>
	
	<plugins>
		<plugin>
			<artifactId>maven-war-plugin</artifactId>
			<configuration>
				<version>2.5</version>
			</configuration>
		</plugin>
	</plugins>
</build>



目录
相关文章
|
6月前
|
Java Maven
maven篇4:pom文件详解
maven篇4:pom文件详解
512 3
|
6月前
|
Java Maven 数据安全/隐私保护
弄懂maven仓库 & 仓库优先级 & settings & pom配置关系及差异
弄懂maven仓库 & 仓库优先级 & settings & pom配置关系及差异
1737 1
|
Java Maven
pom文件中引入本地jar包到maven项目
pom文件中引入本地jar包到maven项目
156 0
|
5月前
|
缓存 IDE Java
maven install报错原因揭秘:‘parent.relativePath‘指向错误的本地POM文件
在使用Maven构建项目时,遇到&#39;parent.relativePath&#39;错误通常是由于父项目POM路径设置错误、版本不一致或内容不匹配导致的。解决方法包括:校正父项目POM的相对路径、确保版本一致、保持POM文件内容同步,并排查其他潜在问题,如子模块命名冲突和Maven缓存问题。通过这些步骤可解决该错误,避免项目构建失败。
maven install报错原因揭秘:‘parent.relativePath‘指向错误的本地POM文件
|
6月前
|
Java Maven
idea中maven项目pom文件Could not acquire lock(s)
idea中maven项目pom文件Could not acquire lock(s)
2373 2
|
4月前
|
Java Maven
maven 工程pom依赖优化及常用命令
maven 工程pom依赖优化及常用命令
55 0
|
6月前
|
XML Java Maven
Maven POM
Maven的POM(Project Object Model)是项目的基本配置文件,以XML格式描述项目信息、依赖、插件及构建细节。包含groupId、artifactId、version等必填字段,用于定义项目唯一标识和构建路径。POM还涉及目标执行、项目profile、开发者列表及邮件列表信息。在工作时,Maven通过读取POM获取配置并执行任务。
|
6月前
|
Java Maven
maven:the pom for XXX is missing, no dependency information available
maven:the pom for XXX is missing, no dependency information available
433 0
|
6月前
|
Java Maven
IDEA Maven SpringBoot配置POM文件
IDEA Maven SpringBoot配置POM文件
246 0
|
XML 存储 Java
Maven之POM介绍
Maven之POM介绍
421 0
Maven之POM介绍

推荐镜像

更多