Spring Cloud与微服务之父Maven模块

文章目录

  • 项目结构
  • springcloud-parent中pom.xml
    • springcloud-parent中pom.xml的作用
    • 源码

项目结构

  接下来我将开始尝试创建基于SpringCloud的eureka微服务项目架构,首先看一下项目的总体文件模块结构:

Spring Cloud与微服务之父Maven模块_第1张图片

  其对应的Maven模块结构如下:

Spring Cloud与微服务之父Maven模块_第2张图片

springcloud-parent中pom.xml

springcloud-parent中pom.xml的作用

  springcloud-parent父模块在这里的作用主要有如下这么几点:

  • 指定项目的公共依赖模块

  比如说下面的指定spring boot的parent,也就是说指定当前模块是哪一个Maven模块的子模块,这样自该模块下的所有子模块,全部都会继承该parent父模块中的依赖。


	org.springframework.boot
	spring-boot-starter-parent
	1.5.4.RELEASE

  它的另一个作用是指定子模块所继承的公共依赖,比如说junit测试依赖,比如说logging日志依赖等等都是如此。


	org.junit.jupiter
	junit-jupiter-api
	5.3.2
	test

  • 加载子Maven模块

  Maven父模块是通过如下方式自动加载子模块的:

	
		springcloud-goods-item
		springcloud-goods-order
		springcloud-eureka
		springcloud-eureka2
		springcloud-goods-item2
		springcloud-api-gateway
		springcloud-config-server
		springcloud-config-resources
		rabbit-mq-resources
		springcloud-goods-db
	

  这样我们在父模块中执行Maven指令,其Maven指令会自动的传递到子Maven模块中执行,比如说下面的指令就是如此:

mvn clean

  它的意思是清理父模块以及子模块中的target文件夹

  • 指定子Maven模块的软件版本

  根据Maven的规则,一旦在父模块中指定版本号,其子模块就不用指定版本号了,因为子模块的版本号默认与父模块相同。

  • 指定子Maven模块的插件信息

  其通过plugins来指定子模块中所使用的插件版本及信息,这样子模块中就无需重复再写了,直接使用父模块中的插件及对应的版本,比如说Maven的编译插件maven-compiler-plugin等。

  • 指定子Maven模块的资源打包方式

  在这里,其指定的是将Spring Cloud的配置文件*.yml视为资源文件进行使用,比如说打入war包等。当然,位于resources文件夹内的文件,默认就是资源文件,所以说这里也可以省略。


    src/main/resources
    
        **/*.yml
    
    false

  • 指定Maven项目的私服上传地址

  当我们配置好了distributionManagement,我们可以通过使用如下指令将项目发布到私服中:

mvn deploy -Dmaven.test.skip=true

其中的 -Dmaven.test.skip=true指的是忽略测试文件。

  • 统一子模块中的父模块版本号

  这里使用maven-resources-plugin插件来统一Maven众多子模块中的parent的版本号信息。

  当我们修改了父模块的版本号时,我们要统一修改子模块中的版本号信息,此时我们可以直接执行如下命令:

mvn -N versions:update-child-modules

  当然,我们还可以使用另一种方式,就是在所有的子模块的parent中通过EL表达式指定父模块的版本号,如下:

${springcloud.goods.version}

  这里的代码亲测可用,只是在IDEA中报错,但是并不影响使用,而由于我有洁癖,看着IDE报红,实在不忍直视,所以说就没有采用这种方式,而是直接通过maven-resources-plugin来进行统一管理。

源码

  pom.xml源码:




    4.0.0

    
        org.springframework.boot
        spring-boot-starter-parent
        1.5.4.RELEASE
    

    com.lyc
    springcloud-parent
    1.0-RELEASE
    pom

    
        UTF-8
    

    
        springcloud-goods-item
        springcloud-goods-order
        springcloud-eureka
        springcloud-eureka2
        springcloud-goods-item2
        springcloud-api-gateway
        springcloud-config-server
        springcloud-config-resources
        rabbit-mq-resources
        springcloud-goods-db
    

    SpringCloud微服务
    http://www.example.com

    
        
        
            org.junit.jupiter
            junit-jupiter-api
            5.3.2
            test
        
        
        
            org.projectlombok
            lombok
            1.18.4
        
        
        
            org.springframework.boot
            spring-boot-starter-logging
        
    
    
    
        
            nexus-releases
            releases for lyc
            http://118.190.210.59:8081/repository/maven-releases/
        
        
            nexus-snapshots
            snapshots for lyc
            http://118.190.210.59:8081/repository/maven-snapshots/
        
    

    
        ${project.artifactId}
        
        
            
                src/main/resources
                
                    **/*.yml
                
                false
            
        
        
            
                org.apache.maven.plugins
                maven-resources-plugin
                3.1.0
                
                    UTF-8
                
            
            
                org.apache.maven.plugins
                maven-compiler-plugin
                3.8.0
                
                    1.8
                    1.8
                    UTF-8
                
            
            
                org.apache.maven.plugins
                maven-clean-plugin
                3.1.0
            
            
                org.apache.maven.plugins
                maven-deploy-plugin
                3.0.0-M1
            
            
                org.apache.maven.plugins
                maven-install-plugin
                3.0.0-M1
            
            
                org.apache.maven.plugins
                maven-jar-plugin
                3.1.0
            
            
                org.apache.maven.plugins
                maven-site-plugin
                3.7.1
            
            
                org.apache.maven.plugins
                maven-surefire-plugin
                3.0.0-M1
            
            
                org.codehaus.mojo
                versions-maven-plugin
                2.3
                
                    false
                
            
        
        
            
                
                    org.apache.maven.plugins
                    maven-resources-plugin
                    3.1.0
                    
                        UTF-8
                    
                
                
                    org.apache.maven.plugins
                    maven-compiler-plugin
                    3.8.0
                    
                        1.8
                        1.8
                        UTF-8
                    
                
                
                    org.apache.maven.plugins
                    maven-clean-plugin
                    3.1.0
                
                
                    org.apache.maven.plugins
                    maven-deploy-plugin
                    3.0.0-M1
                
                
                    org.apache.maven.plugins
                    maven-install-plugin
                    3.0.0-M1
                
                
                    org.apache.maven.plugins
                    maven-jar-plugin
                    3.1.0
                
                
                    org.apache.maven.plugins
                    maven-site-plugin
                    3.7.1
                
                
                    org.apache.maven.plugins
                    maven-surefire-plugin
                    3.0.0-M1
                
            
        
    


你可能感兴趣的:(Spring Cloud与微服务之父Maven模块)