Maven配置、第三方依赖jar包打包以及Profiles多环境配置

由一次打包部署失败引发的深入探索┑( ̄▽  ̄)┍

一、Maven配置

1、概览


   4.0.0
 
  
  ...
  ...
  ...
  ...
  ...
  ...
  ...
  ...
  ...
 
  
  ...
  ...
 
  
  ...
  ...
  ...
  ...
  ...
  ...
  ...
  ...
 
  
  ...
  ...
  ...
  ...
  ...
  ...
  ...
  ...
  ...

2、基本配置

groupId+artifactId+version:组成项目的唯一定位,当groupId和version是从父级继承时,则不必显式定义他们;
packaging:定义打包方式,当前主要的打包方式有pom、 jar、 maven-plugin、 ejb、 war、 ear、 rar,其中jar为默认打包方式;
properties:定义pom常量,pom常量可以在pom文件的任意地方通过${}来引用;

3、构建配置

构建配置分为两种,"Project Build"和"Profile Build"


  ...
  
  ...
 
  
    
      
      ...
    
  

build:定义项目的目录结构和插件管理;


  install
  ${basedir}/target
  ${artifactId}-${version}
  
    filters/filter1.properties
  
  ...

defaultGoal:指定默认的目标或者阶段,比如目标可以是jar:jar,阶段可以是install,这两个效果相同;
directory:构建的目标目录,默认是${basedir}/target;
finalName:项目最终生成的名字,默认是${artifactId}-${version};
filters:定义需要应用的*.properties文件。换句话说就是,在构建时筛选器文件中定义的“name=value”会替换掉资源文件中${name}字符串。Maven的默认筛选器目录是${basedir}/src/main/filters;
resources:资源列表,描述与项目关联的文件的内容和位置

  
    ...
    
      
        META-INF/plexus
        false
        ${basedir}/src/main/plexus
        
          configuration.xml
        
        
          **/*.properties
        
      
    
    ...
  

targetPath:定义项目生成后资源文件放置的位置,默认位置是${basedir};
filtering:可选值为true或false,定义是否为此资源启用筛选。与filters、profile元素结合使用;
directory:定义在哪找到资源文件,默认位置是${basedir}/src/main/resources;
includes:定义directory下需要包含的资源文件,支持*作为通配符匹配文件名;
excludes:结构同includes,定义directory下需要忽略的资源文件,当includes和excludes有冲突时,以excludes为准;

4、环境配置

profiles:根据不同的构建环境更改设置;


    
      test
      ...
      ...
      ...
      ...
      ...
      ...
      ...
      ...
      ...
    
  

activation:描述当前profile激活的条件,当activation里面描述的条件都满足时,就会激活当前profile;


    
      test
      
        false
        1.5
        
          Windows XP
          Windows
          x86
          5.1.2600
        
        
          sparrow-type
          African
        
        
          ${basedir}/file2.properties
          ${basedir}/file1.properties
        
      
      ...
    
  

activeByDefault:是否是默认激活;
jdk:运行环境的jdk版本号;
os:运行环境的操作系统的属性;
file:哪些文件存在或者哪些文件缺失;

二、第三方依赖jar包打包

Maven项目有时候会遇到有第三方依赖打包的情况,如果这个时候不想deploy到Maven库上,可以这样做:
打jar包
1、新建一个目录用于存放第三方依赖,目录位置看个人喜好,这里新建lib放在项目根目录下;
2、pom文件中添加依赖;


        xx
        xx
        2.0
        system
        ${project.basedir}/lib/xx-xx-2.0.jar
    

3、在pom文件的build元素下添加resource配置,目的是将lib里的第三方依赖打到BOOT-INF/lib/下。这里还需要再配置另一个resource,因为添加前面这个配置后会覆盖掉默认的resource配置导致项目原本的资源文件没有打进构建生成的包里;

 
        
            lib
            BOOT-INF/lib/
            
                **/*.jar
            
         
         
            src/main/resources
            
                **/*
            
        
    

打war包
1、2步骤同jar包,3步骤需要这样修改


    
        org.apache.maven.plugins
        maven-war-plugin
        
            
                
                    lib
                    WEB-INF/lib/
                    
                        **/*.jar
                    
                
            
        
    

三、Profiles多环境配置

1、新建一个目录用于存放filter配置文件,这里新建filters目录,并存在localhost.properties、test.properties、prod.properties三个环境的配置文件。
2、pom文件中添加profiles配置


        
            localhost
            
                localhost
            
            
                true
            
        
        
            test
            
                test
            
            
                false
            
        
        
            prod
            
                prod
            
            
                false
            
        
    

3、pom文件中的build元素下添加配置


    
        ${basedir}/src/main/resources
        
            **/*
        
        true
    


    ${basedir}/filters/${profiles.active}.properties

4、${basedir}/src/main/resources目录下编写总配置文件,使用${name}占位符(SpringBoot项目使用@name@占位符)来获取filters中配置文件对应环境的配置值

参考文章:
https://www.jianshu.com/p/574f74d1d0ee
http://maven.apache.org/pom.html

你可能感兴趣的:(Maven配置、第三方依赖jar包打包以及Profiles多环境配置)