maven pom编写

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>
时间: 2025-01-09 10:55:27

maven pom编写的相关文章

svn-Myeclipse10 Maven pom.xml报错

问题描述 Myeclipse10 Maven pom.xml报错 我电脑上面有eclipse和MyEclipse都有,在eclipse中重SVN上面下载项目没有错!但是在MyEclipse中下载下来pom.xml就报错~! 报错: Project build error: Non-resolvable parent POM: Could not find artifact com.ifec.blueair:blueair-packagemanager:pom:0.0.1-SNAPSHOT and

maven pom里这段配置是什么意思呀?

问题描述 maven pom里这段配置是什么意思呀? resources resource directory src/main/resources /directory targetPath META-INF/spring /targetPath includes include applicationContext-provider.xml /include /includes /resource resource directory src/main/resources /director

Maven POM 浅析

Maven - POM POM 代表工程对象模型.它是使用 Maven 工作时的基本组建,是一个 xml 文件.它被放在工程根目录下,文件命名为 pom.xml. POM 包含了关于工程和各种配置细节的信息,Maven 使用这些信息构建工程. POM 也包含了目标和插件.当执行一个任务或者目标时,Maven 会查找当前目录下的 POM,从其中读取所需要的配置信息,然后执行目标.能够在 POM 中设置的一些配置如下: project dependencies plugins goals build

IntelliJ IDEA + Maven环境编写第一个hadoop程序

1. 新建IntelliJ下的maven项目 点击File->New->Project,在弹出的对话框中选择Maven,JDK选择你自己安装的版本,点击Next   2. 填写Maven的GroupId和ArtifactId 你可以根据自己的项目随便填,点击Next 这样就新建好了一个空的项目 这里程序名填写WordCount,我们的程序是一个通用的网上的范例,用来计算文件中单词出现的次数   3. 设置程序的编译版本 打开Intellij的Preference偏好设置,定位到Build, E

maven pom聚合与继承

说到聚合与继承我们都很熟悉,maven同样也具备这样的设计原则,下面我们来看一下Maven的pom如何进行聚合与继承的配置实现. 一.为什么要聚合? 随着技术的飞速发展和各类用户对软件的要求越来越高,软件本身也变得越来越复杂,然后软件设计人员开始采用各种方式进行开发,于是就有了我们的分层架构.分模块开发,来提高代码的清晰和重用.针对于这一特性,maven也给予了相应的配置. 情景分析一: 我们在开发过程中,创建了2个以上的模块,每个模块都是一个独立的maven project,在开始的时候我们可

maven pom文件报错了,

问题描述 maven 这个东西不好用但必须得用啊, 不知道怎么搞的, 我在模块backoffice中修改了代码 用maven的install工具 build success, 但是我去查看本地repository的模块backoffice中的代码 却发现没有改变(不过这是偶尔的),install 好几次都不改变 ,就直接将repository中的backoffice模块删掉了, 后来POM文件就报错了Missing artifact com.easydigital.tribe:backoffic

maven - pom.xml 聚合(父)工程 基本内容演示

企业开发中所用到的基本jar包以及插件都已在此 可以自己根据实际情况酌情增减   1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org

pom文件中引用org.apache.maven.plugins报错

问题描述 pom文件中引用org.apache.maven.plugins报错 错误:Plugin execution not covered by lifecycle configuration: org.apache.maven.plugins:maven-compiler-plugin:3.1:testCompile (execution: default-testCompile phase: test-compile) 解决方案 maven pom 报错 Failed to execut

配置pom.xml用maven打包java工程的方法(推荐)_java

最近由于项目需要,研究了一下maven的打包,项目要做到 1,生成3个目录/lib,/conf,/bin目录 2,把所有的jar目录编译.拷贝到/lib目录(包括maven的jar包和lib目录下的jar,以及编译的jar包) 3,把所有的启动脚本从工程根目录拷贝到/bin目录 4,把所有的配置文件从src/main/resources拷贝到/conf  下面是配置的pom.xml,我把相关的配置都加了注释,一看就能明白,把build节点拷贝到你们的项目中,就基本可以用了:) <project