springboot项目:maven 的pom文件详解;跳过测试打包,每个标签解释:热部署依赖、dependencyManagement标签、

文章目录

  • 一、前言
  • 二、pom.xml
  • 三、标签解释
    • 1. dependencyManagement
  • 4、跳过测试打包

一、前言

  • 有时候做微服务或者单个应用时,pom文件不对,或者少一个依赖,导致编码出错,运行出错,会浪费很长时间,所以,特来写一篇博客,也算是对自己的加深印象吧。come on,baby
  • 还有对各个标签的解释,如:dependencyManagement

二、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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    
    <modelVersion>4.0.0modelVersion>
    
    <parent>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-parentartifactId>
        <version>1.5.3.RELEASEversion>
        <relativePath/> 
    parent>
    
    <groupId>com.fenggroupId>
    
    <artifactId>springboottestartifactId>
    
    <version>0.0.1-SNAPSHOTversion>
    
    <name>springboottestname>
    
    <description>Demo project for Spring Bootdescription>

    
    <properties>
        <java.version>1.8java.version>
    properties>

    <dependencies>
		
		<dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>
    	
		<dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-eurekaartifactId>
            <version>1.3.0.RELEASEversion>
        dependency>
		
        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-configartifactId>
            <version>1.3.0.RELEASEversion>
        dependency>
        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-actuatorartifactId>
        dependency>
        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-data-redisartifactId>
        dependency>
		
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-testartifactId>
            <scope>testscope>
        dependency>
		
        <dependency>
            <groupId>org.apache.httpcomponentsgroupId>
            <artifactId>httpclientartifactId>
            <version>4.5.8version>
        dependency>

        
        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-devtoolsartifactId>
            <optional>trueoptional>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>springloadedartifactId>
        dependency>

		
		<dependency>
            <groupId>com.alibabagroupId>
            <artifactId>fastjsonartifactId>
            <version>1.2.47version>
        dependency>
		
        <dependency>
            <groupId>org.apache.rocketmqgroupId>
            <artifactId>rocketmq-clientartifactId>
            <version>4.4.0version>
        dependency>
		
        <dependency>
            <groupId>org.apache.thriftgroupId>
            <artifactId>libthriftartifactId>
            <version>0.12.0version>
        dependency>
    dependencies>

	
	<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>mysqlgroupId>
                <artifactId>mysql-connector-javaartifactId>
                <version>5.1.44version>
            dependency>
     
        dependencies>
	dependencyManagement>

	
    <build>
    	
    	<finalName>project_namefinalName>
		
		<resources>
		    <resource>
		        <directory>src/main/resourcesdirectory>
		        <excludes>
		            <exclude>*.ymlexclude>
		        excludes>
		    resource>
		resources>
    	
        <plugins>
        	
            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
            plugin>
        plugins>
    build>
project>


三、标签解释

1. dependencyManagement

在Maven多模块的时候,管理依赖关系是非常重要的,各种依赖包冲突,查询问题起来非常复杂,于是就用到了,
示例说明,
在父模块中:

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>mysqlgroupId>
                <artifactId>mysql-connector-javaartifactId>
                <version>5.1.44version>
            dependency>
           
        dependencies>
dependencyManagement>

那么在子模块中只需要和即可,如:

 <dependencies>
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
        dependency>
 dependencies>

说明:

使用dependencyManagement可以统一管理项目的版本号,确保应用的各个项目的依赖和版本一致,不用每个模块项目都弄一个版本号,不利于管理,当需要变更版本号的时候只需要在父类容器里更新,不需要任何一个子项目的修改;如果某个子项目需要另外一个特殊的版本号时,只需要在自己的模块dependencies中声明一个版本号即可。子类就会使用子类声明的版本号,不继承于父类版本号。

与dependencies区别:

  1. Dependencies相对于dependencyManagement,所有生命在dependencies里的依赖都会自动引入,并默认被所有的子项目继承。
  2. dependencyManagement里只是声明依赖,并不自动实现引入 ,因此子项目需要显示的声明需要用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom;另外 如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。

4、跳过测试打包

在测试开发中,有时候需要外置 yml 配置文件,所以在 pom中 使用组件如下:



<resources>
    <resource>
        <directory>src/main/resourcesdirectory>
        <excludes>
            <exclude>*.ymlexclude>
        excludes>
    resource>
resources>

但是在普通打包时,却会报错,加载不到配置文件。因为打包的时候,项目会自动执行一遍。
这时需要跳过测试进行打包,执行以下语句即可。

mvn install -Dmaven.test.skip=true

你可能感兴趣的:(maven,npm,webpack,的pom文件详解;跳过测试打包)