Maven --- pom.xml详解

一、基础配置

 

<!-- 声明项目描述符遵循哪一个POM模型版本,maven2和3只能为4.0.0 -->
	<modelVersion>4.0.0</modelVersion>
	
	<!-- 基本配置 -->
	<!-- 公司或者组织的唯一标志,并且构建时生成的路径也是由此生成  -->
	<groupId>com.aaa.bbb</groupId>
	
	<!-- 本项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 -->
	<artifactId>bbb-ccc</artifactId>
	
	<!-- 本项目目前所处的版本号 -->
	<version>0.0.1-SNAPSHOT</version>
	
	<!-- 
		打包类型,默认是jar,可以配置成war、jar、pom类型,
		插件可以创建他们自己的构件类型,所以前面列的不是全部构件类型
	 -->  
	<packaging>jar</packaging>
	
	
	<!-- 
		项目相关依赖配置,如果在父项目写的依赖,会被子项目引用,一般父项目会将子项目公用的依赖引入
	 -->
	<dependencies>
		<!-- 一个依赖包 -->
		<dependency>
			<!-- 依赖项的groupId -->
			<groupId></groupId>
			<!-- 依赖项的artifactId -->
			<artifactId></artifactId>
			<!-- 依赖项的版本 -->
			<version></version>
			<!-- 
				依赖的分类器。分类器可以区分属于同一个POM,但不同构建方式的构件。分类器名被附加到文件名的版本号后面。
				例如,如果你想要构建两个单独的构件成JAR,一个使用Java 1.4编译器,另一个使用Java 6编译器,你就可以使用分类器来生成两个单独的JAR构件。
			 -->
			<classifier></classifier>
			<!-- 屏蔽依赖关系。 比如项目中使用的libA依赖某个库的1.0版,libB依赖某个库的2.0版,现在想统一使用2.0版,就应该屏蔽掉对1.0版的依赖 -->
			<exclusions>
				<exclusion>
					<groupId></groupId>
					<artifactId></artifactId>
				</exclusion>
			</exclusions>
			<!-- 设置指依赖是否可选,默认为false,即子项目默认都继承:为true,则子项目必需显示的引入,与dependencyManagement里定义的依赖类似  --> 
			<optional>false</optional>
			<!-- 依赖项的适用范围:
				compile :缺省值,适用于所有阶段,会随着项目一起发布。
				provided:类似于编译,但支持你期待jdk或者容器提供,类似于classpath
				runtime: 只在运行时使用,如JDBC驱动,适用运行和测试阶段。
				test: 只在测试时使用,用于编译和运行测试代码。不会随项目发布。
				system: 类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。
				optional: 当项目自身被依赖时,标注依赖是否传递。用于连续依赖时使用
				systemPath: 仅用于范围为system。提供相应的路径
			 -->
			<scope>compile</scope>
			<!-- 仅供system范围使用。注意,不鼓励使用这个元素,并且在新的版本中该元素可能被覆盖掉。该元素为依赖规定了文件系统上的路径。需要绝对路径而不是相对路径。推荐使用属性匹配绝对路径,例如${java.home}。 -->
			<systemPath></systemPath>
			<!-- 默认为jar类型,常用的类型有:jar,war,test-jar...,可设置plugins中的extensions值为true后在增加 新的类型 -->
			<type></type>
		</dependency>
	</dependencies>
	
	<!-- 为pom定义一些常量,在pom中的其它地方可以直接引用 使用方式 如下 :${struts.version} -->
	<properties>
		<struts.version>2.3.15</struts.version>
		<mysql.version>5.1.29</mysql.version>
		<hibernate.version>4.3.1.Final</hibernate.version>
	</properties>


二、构建配置

 

 

 

 

<build>  
  
	    <!-- 产生的构件的文件名,默认值是${artifactId}-${version}。 -->  
	    <finalName>myPorjectName</finalName>  
	  
	    <!-- 构建产生的所有文件存放的目录,默认为${basedir}/target,即项目根目录下的target -->  
	    <directory>${basedir}/target</directory>  
	  
	    <!--当项目没有规定目标(Maven2叫做阶段(phase))时的默认值, -->  
	    <!--必须跟命令行上的参数相同例如jar:jar,或者与某个阶段(phase)相同例如install、compile等 -->  
	    <defaultGoal>install</defaultGoal>  
	  
	    <!--当filtering开关打开时,使用到的过滤器属性文件列表。 -->  
	    <!--项目配置信息中诸如${spring.version}之类的占位符会被属性文件中的实际值替换掉 -->  
	    <filters>  
	        <filter>../filter.properties</filter>  
	    </filters>  
	  
	    <!--项目相关的所有资源路径列表,例如和项目相关的配置文件、属性文件,这些资源被包含在最终的打包文件里。 -->  
	    <resources>  
	        <resource>  
	  
	            <!--描述了资源的目标路径。该路径相对target/classes目录(例如${project.build.outputDirectory})。 -->  
	            <!--举个例子,如果你想资源在特定的包里(org.apache.maven.messages),你就必须该元素设置为org/apache/maven/messages。 -->  
	            <!--然而,如果你只是想把资源放到源码目录结构里,就不需要该配置。 -->  
	            <targetPath>resources</targetPath>  
	  
	            <!--是否使用参数值代替参数名。参数值取自properties元素或者文件里配置的属性,文件在filters元素里列出。 -->  
	            <filtering>true</filtering>  
	  
	            <!--描述存放资源的目录,该路径相对POM路径 -->  
	            <directory>src/main/resources</directory>  
	  
	            <!--包含的模式列表 -->  
	            <includes>  
	                <include>**/*.properties</include>  
	                <include>**/*.xml</include>  
	            </includes>  
	  
	            <!--排除的模式列表 如果<include>与<exclude>划定的范围存在冲突,以<exclude>为准 -->  
	            <excludes>  
	                <exclude>jdbc.properties</exclude>  
	            </excludes>  
	  
	        </resource>  
	    </resources>  
	  
	    <!--单元测试相关的所有资源路径,配制方法与resources类似 -->  
	    <testResources>  
	        <testResource>  
	            <targetPath />  
	            <filtering />  
	            <directory />  
	            <includes />  
	            <excludes />  
	        </testResource>  
	    </testResources>  
	  
	    <!--项目源码目录,当构建项目的时候,构建系统会编译目录里的源码。该路径是相对于pom.xml的相对路径。 -->  
	    <sourceDirectory>${basedir}\src\main\java</sourceDirectory>  
	  
	    <!--项目脚本源码目录,该目录和源码目录不同, <!-- 绝大多数情况下,该目录下的内容会被拷贝到输出目录(因为脚本是被解释的,而不是被编译的)。 -->  
	    <scriptSourceDirectory>${basedir}\src\main\scripts  
	    </scriptSourceDirectory>  
	  
	    <!--项目单元测试使用的源码目录,当测试项目的时候,构建系统会编译目录里的源码。该路径是相对于pom.xml的相对路径。 -->  
	    <testSourceDirectory>${basedir}\src\test\java</testSourceDirectory>  
	  
	    <!--被编译过的应用程序class文件存放的目录。 -->  
	    <outputDirectory>${basedir}\target\classes</outputDirectory>  
	  
	    <!--被编译过的测试class文件存放的目录。 -->  
	    <testOutputDirectory>${basedir}\target\test-classes  
	    </testOutputDirectory>  
	  
	    <!--项目的一系列构建扩展,它们是一系列build过程中要使用的产品,会包含在running bulid‘s 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值