maven工程介绍

文章目录

  • 一、 maven工程种类
    • 1.1 、POM 工程
      • scope 依赖范围
    • 1.2、JAR 工程
    • 1.3、WAR 工程
  • 二、maven 工程关系
    • 2.1、聚合 ``
    • 2.2 、依赖 ``
    • 2.3 、继承 ``
  • 三、 Maven 中的常见插件
    • 3.1、java 编译器插件

一、 maven工程种类

1.1 、POM 工程

用在父级工程或聚合工程中,用来做jar 包的版本控制。

常见pom.xml 配置如下:

<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.0modelVersion>
	
	<groupId>groupNamegroupId>
	
	<artifactId>artifactNameartifactId>

	
	<version>1.0version>

	
	<packaging>pompackaging>

		
	<properties>
		
		<junit.version>4.12junit.version>
	properties>
	
	
	
	<dependencyManagement>
		<dependencies>

			
			<dependency>
				<groupId>junit groupId>
				<artifactId>junit artifactId>
				<version>${junit.version}version>
				
				
				<scope>testscope>
			dependency>

		dependencies>
	dependencyManagement>
	
	
	<dependencies>

		
		<dependency>
			<groupId>junit groupId>
			<artifactId>junit artifactId>
			<version>${junit.version}version>
			
			<scope>testscope>
		dependency>

	dependencies>

project>

scope 依赖范围

依赖范围
(scope)
对于主代码
classpath有效
对于测试代码
classpath有效
被打包,对于运行时
classpath有效
例子
compile [ 默认 ] Y Y Y log4j
provided Y Y - servlet-api
test - Y - junit
runtime - - Y JDBC 驱动实现,如 :
mysql-connector-java-5.1.7-bin.jar

1.2、JAR 工程

将会打包成jar 用作jar 包使用。即常见的本地工程- Java Project 。

常见pom.xml 配置 如下:

<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.0modelVersion>
	<groupId>groupNamegroupId>
	<artifactId>artifactNameartifactId>
	<version>1.0version>

	
	

project>

1.3、WAR 工程

将会打包成war,发布在服务器上的工程。如网站或服务。即常见的网络工程- Dynamic Web Project。

war工程默认没有WEB-INF 目录及web.xml 配置文件,IDE 通常会显示工程错误,提供完整工程结构可以解决。常见pom.xml 配置如下:

<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.0modelVersion>
	<groupId>groupNamegroupId>
	<artifactId>artifactNameartifactId>
	<version>1.0version>
	<packaging>warpackaging>

project>

二、maven 工程关系

2.1、聚合

我们想要一次构建两个项目,而不是到两个模块的目录下分别执行mvn 命令 – Maven的聚合。

总工程(POM工程)与各子模块的关系。

当我们开发的工程拥有2 个以上模块的时候,每个模块都是一个独立的功能集合。比如某大学系统中拥有搜索平台,学习平台,考试平台等。开发的时候每个平台都可以独立编译, 测试,运行。这个时候我们就需要一个聚合工程。

在创建聚合工程的过程中,总工程必须是一个POM 工程,各子模块可以是任意类型模块(Maven Module )。
所有聚合工程和聚合模块必须处于同一个组 groupId)中,且聚合工程可以嵌套。
具体pom.xml 文件配置如下:

总工程配置 (superGroup):

modules标签 就是 聚合关系的定义

<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.0modelVersion>
	<groupId>superGroupgroupId>
	<artifactId>superProjectartifactId>
	<version>1.0version>
	<packaging>pompackaging>

	
	<modules>
		<module>subProject1module>
		<module>subProject2module>
	modules>

project>

子模块配置 (subProject1):

<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.0modelVersion>	
	<groupId>superGroupgroupId>
	<artifactId>subProject1artifactId>
	<packaging>jarpackaging>
	<version>1.0version>
	
project>

subProject2 :

<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.0modelVersion>
	<groupId>superGroupgroupId>
	<artifactId>subProject2artifactId>
	<packaging>jarpackaging>
	<version>1.0version>
		
project>

2.2 、依赖

A工程与B工程是平级关系。

即A工程开发或运行过程中需要B工程提供支持,则代表A 工程依赖B 工程。
在这种情况下,A工程需要在pom.xml 文件中增加下属配置定义依赖关系:

<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.0modelVersion>

	
	<groupId>localPrjectGroupNamegroupId>

	
	<artifactId>localPrjectArtifactNameartifactId>

	
	<version>localPrjectVersionNoversion>

	
	<packaging>packagingTypeNamepackaging>

	
	<dependencies>

		
		<dependency>
			
			<groupId>groupNamegroupId>

			
			<artifactId>artifactNameartifactId>

			
			<version>versionNoversion>
			
			
			<scope>systemscope>
		dependency>


	dependencies>
project>

2.3 、继承

A工程与B工程是子与父关系。
子工程只能有一个父工程。

如果A 工程继承B 工程,则代表A 工程默认依赖B 工程依赖的所有资源,且可以应用B 工程中定义的所有资源信息。

被继承的工程(B工程)只能是POM 工程。具体工程pom.xml 文件配置如下:

父工程配置:(B工程)

<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.0modelVersion>
	<groupId>parentGroupgroupId>
	<artifactId>parentProjectartifactId>
	<version>1.0version>
	<packaging>pompackaging>

project>

子工程配置:(A 工程)

parent标签表示继承关系
子工程,有且只能有一个 parent

<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.0modelVersion>

	
	<parent>
		<groupId>parentGroupgroupId>
		<artifactId>parentProjectartifactId>
		<version>1.0version>
	parent>


	
	<groupId>childGroupgroupId>
	<artifactId>childProjectartifactId>
	<version>1.0version>

project>

三、 Maven 中的常见插件

Maven 官方有两个插件列表,

第一个列表的GroupId 为 org.apache.maven.plugins,这里的插件最为 成熟
具体地址为:http://maven.apache.org/plugins/index.html 。

第二个列表的GroupId 为 org.codehaus.mojo ,这里的插件没有那么核心,但也有不少十分有用,
其地址为:http://mojo.codehaus.org/plugins.html 。

3.1、java 编译器插件

pom.xml 配置:

<build>
	<plugins>
		
		<plugin>
			<groupId>org.apache.maven.pluginsgroupId>
			<artifactId>maven-compiler-pluginartifactId>
			<version>3.2version>
			<configuration>
				<source>1.7source>
				<target>1.7target>
				<encoding>UTF-8encoding>
			configuration>
		plugin>
	plugins>
build>

你可能感兴趣的:(Maven,&,gradle)