pom.xml配置文件讲解

1,项目一般是 :父工程+N个子工程(父工程打包类型为pom,子工程为jar(默认为jar))

前提概念讲解:
	maven项目:
		指符合maven规范的项目:一个文件夹下面有src目录跟pom.xml文件就叫maven项目
	
	javaweb项目跟java项目:
		java项目是可以直接在jvm(jdk)上运行的字节码文件(**.class) 打包为jar包。
		java-web项目是需要放到web容器(tomcat、 jboss 、resin、 weblogic、 websphere、 glassfish)上在jvm(jdk)上运行的字节码文件,打包为war包放到web容器中运行,或者打包成jar包直接运行(如springboot项目)。
				
		
	普通的maven项目跟springboot项目:
		1,都符合maven项目规范
		2,springboot项目内置tomcat(<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency>)
		3.所以springboot项目可以直接打成jar包通过java -jar 运行。
		4.maven需要打成war包,放到tomcat 的web目录下运行。
		
	

   1.1这是一个父工程的pom文件(一般以maven项目作为父工程,此处为springboot为父工程)
   		父工程一般不写逻辑代码,只是规范子工程:springboot比maven多了很多内置东西,显得较重,如tomcate;所以一般用maven项目作为父工程;
<?xml version="1.0" encoding="UTF-8"?>
	<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">

    //maven2.0固定写法
    <modelVersion>4.0.0</modelVersion>
    /**
    maven仓库管理当前项目jar包:com/insurance/insure:insure-1.0.0.pom
    **/
    <groupId>com.insurance</groupId>
 	//当前项目的唯一id,因为一个groupid下面可以有多个artifactid
    <artifactId>insure</artifactId>
    <version>1.0.0</version>
    //打包的机制,如pom,jar, maven-plugin, ejb, war, ear, rar, par,默认为jar
    <packaging>pom</packaging>


	//这是一个springboot工程默认的父依赖,这个依赖是一个pom类型项目,注意后面的<dependencyManagement>标签的使用;
	/**
		springboot默认父依赖的作用:
		1.定义了 Java 编译版本为 1.8 。
		2.使用 UTF-8 格式编码。
		3.继承自 spring-boot-dependencies,这个里边定义了依赖的版本,也正是因为继承了这个依赖,所以我们在写依赖时才不需要写版本号。
		4.执行打包操作的配置。
		5.自动化的资源过滤。
		6.自动化的插件配置。
			针对 application.properties 和 application.yml 的资源过滤,包括通过 profile 定义的不同环境的配置文件,例如 application-dev.properties 和 application-dev.yml。
	**/
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.12.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>


		/**
		<properties>
			<key>value</key>
		</properties>
		为pom定义一些常量,在pom中的其它地方可以直接引用 使用方式 如下 :${key}
		**/
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>10</java.version>
    </properties>

    <!--公共依赖-->
    <dependencies>
			<groupId>com.winner.trade</groupId>
			<artifactId>trade-test</artifactId>
			<version>1.0.0-SNAPSHOT</version>
			 //maven认为,程序对外部的依赖会随着程序的所处阶段和应用场景而变化,所以maven中的依赖关系有作用域(scope)的限制。scope包含如下的取值:compile(编译范围)、provided(已提供范围)、runtime(运行时范围)、test(测试范围)、system(系统范围)
			<scope>test</scope>
			// 设置指依赖是否可选,默认为false,即子项目默认都继承:为true,则子项目必需显示的引入,与dependencyManagement里定义的依赖类似  
			<optional>false</optional>
			//屏蔽依赖关系。 比如项目中使用的libA依赖某个库的1.0版,libB依赖某个库的2.0版,现在想统一使用2.0版,就应该屏蔽掉对1.0版的依赖 -->
			//少用,有时当前的依赖有多个jdk版本需要指定特定版本才会用到
			<classifier>jdk15</classifier>
			<exclusions>
				<exclusion>
					<groupId>org.slf4j</groupId>
					<artifactId>slf4j-api</artifactId>
				</exclusion>
			</exclusions>
    </dependencies>

	//当前项目的相对路径
    <modules>
        <module>good-auth</module>
        <module>good-config</module>
        <module>good-common</module>
        <module>good-eureka</module>
        <module>good-gateway</module>
        <module>good-modules</module>
    </modules>

	//构建配置,打包
    <build>
    	//使用插件设置
        <pluginManagement>
        	//插件列表
            <plugins>
            	//插件
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <version>${spring-boot.version}</version>
                    <!-- <executions>
                        <execution>
                            <goals>
                                <goal>build-info</goal>
                            </goals>
                        </execution>
                    </executions> -->
                </plugin>
                <plugin>
                    //指定maven编译的jdk版本,如果不指定,maven3默认用jdk 1.5 maven2默认用jdk1.3 -->
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.1</version>
                    <configuration>
                        <source>${java.version}</source> //源代码使用的JDK版本 -->
                        <target>${java.version}</target> //需要生成的目标class文件的编译版本 -->
                        <skip>true</skip>
                        <encoding>UTF-8</encoding>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>



    
    
    //远程仓库到本地git仓库配置<!-- 使用aliyun镜像 -->
    <repositories>
        <repository>
            <id>aliyun</id>
            <name>aliyun</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public</url>
        </repository>
    </repositories>

	//依赖配置,一般在pom类型中会用到到,定义了版本号,子项目在导依赖时,不再需要version,而会主动引用这儿配置的version
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>io.spring.platform</groupId>
                <artifactId>platform-bom</artifactId>
                <version>Brussels-SR9</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

</project>
1.2一个springboot子工程
<?xml version="1.0" encoding="UTF-8"?>

<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.insurance.insure</groupId>
    <artifactId>insure-config</artifactId>
    <packaging>jar</packaging>

	//父工程中modules里面写的
    <name>insure-config</name>
    <description>配置中心</description>

	//父工程
    <parent>
        <groupId>com.insurance</groupId>
        <artifactId>insure</artifactId>
        <version>1.0.0</version>
    </parent>

    <dependencies>
        <!--配置中心服务-->
        <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-config-server</artifactId>
    </dependency>

        <!--消息总线-->
        <!-- <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bus-amqp</artifactId>
        </dependency> -->
    </dependencies>

	/**
	springboot组件打包的代码。idea的maven里面的plugins
	**/
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <finalName>${project.name}</finalName>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值