今天来说说

  1. pom文件和properties文件配置
  2. maven环境勾选之后,怎么识别到?
  3. 在IDEA里面怎么进行Maven打包项目脚本设置,做到一键打包呢?

现在的项目一般都有开发线、测试线、生产线三个服务。

开发线就是自己本地的服务,很简单,直接tomcat或者spingboot点击Run就好了。

测试线一般为了模拟客户操作环境而存在,一般功能开发完成,先在测试线部署,测试一切通过,再直接部署生产线,这里需要使用Maven打包。

生产线则正式投产了,当然要是正常普通部署,依旧需要打包。

一、pom文件和properties文件配置

1.1 properties文件配置

 首先找到application.properties文件,没有的话需要创建一个,并且在里面进行环境的定义

spring.profiles.active = @environment@

自定义。写自己名字都无所谓

注意格式:@***@

1.2 定义所需环境的properties文件

maven fastjson 最新版本_properties文件

在每一个文件里面再次进行环境的相应

spring.profiles.active=dev

这里注意,spring.profiles.active不变

写在这里的文件名称后缀名,就是文件里面active指代的数据

1.3 pom文件的对应设置

pom文件里面需要同步做一下配置

配置在位置在dependencies同级,完整代码如下:

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <includeSystemScope>true</includeSystemScope>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <configuration>
                    <delimiters>
                        <delimiter>&</delimiter>
                    </delimiters>
                    <useDefaultDelimiters>false</useDefaultDelimiters>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>application.properties</include>
                    <include>application-${environment}.properties</include>
                    <include>**/*.xml</include>
                    <include>**/*.html</include>
                    <include>**/*.css</include>
                    <include>**/*.js</include>
                    <include>**/*.png</include>
                </includes>
            </resource>
        </resources>
    </build>

主要分为三大部分,下面分部做解释分析

  • plugins --- plugin --- org.springframework.boot --- org.springframework.boot
  • plugins --- plugin --- org.springframework.boot --- org.apache.maven.plugins
  • resources --- resource --- path

1.3.1 第一部分解释

关于spring-boot-maven-plugin的信息,有一篇博客写的比较好


1.3.2 第二部分解释

另一个plugin里面配置了maven-resources-plugin。

其中有:


<delimiter>@</delimiter>


注意看,这块的意思是:使用@符号将spring.profiles.active 中的名称进行分隔,由于在xml文件里面,所以这块如果定义的符号比较特殊,需要转义。

举例:&      —>    &amp;

spring.profiles.active = &environment&

对应了


  <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <configuration>
                    <delimiters>
                        <delimiter>&</delimiter>
                    </delimiters>
                    <useDefaultDelimiters>false</useDefaultDelimiters>
                </configuration>
  </plugin>

1.3.3 第三部分解释

打包过程中,怎么告诉编译,我的配置文件在哪里,就看resource

请注意里面的

<include>application.properties</include>
 <include>application-${environment}.properties</include>

前一句告诉编译,我还需要application.properties的打包

第二句告诉编译,另一个环境的打包地址。

${ }这种格式在sql注入的时候比较常见,这块用法一致。就是说取到的maven状态,替换了这块的environment位置,生成的文件路径。

1.3.4 maven中pom文件的影响

配置好之后,重新加载maven信息,就会发现旁边的maven工具里面已经可以看到三个不同的环境:

maven fastjson 最新版本_spring_02

写好了properties,pom文件里面也相应的配置了,发现服务可以启动。

如果这时候变化properties中定义好的数据或者pom文件里面的对应节点名称,会发现服务依旧可以启动。

这是为什么?

因为pom文件里面定义的信息是由maven控制的,修改名称但是maven没有重新加载,里面存储的数据依旧没变,那么重启服务的时候,会发现其实名字是对应的,没有变化。

二、负责管理的jar包【只为看部署步骤可跳过此节】

properties,pom文件配置名称不一致的时候

启动报错,原因是什么?

怎么识别到的properties文件?

来吧,展示

2.1 获取启动类配置

待补

2.2 获取meven勾选项

待补

2.3 组合打包

待补

三、打包方式

3.1 借助maven工具

在maven工具栏中Profiles选择需要的环境

点击Lifecycle中点击package进行打包

maven fastjson 最新版本_maven_03

这时候会先进行清理,Target文件删除,重新打包。

3.2 命令行打包

命令行打包可以错过单元测试直接进行,适用场景比较广

mvn clean package -Ptest -DskipTests     --- 测试线

mvn clean package -Pdev -DskipTests        --- 正式线

mvn clean package -Pprod -DskipTests         --- 开发线

需要在   Terminal   控制台进行,一般情况下,已经进入到文件目录中,直接输入命令:

maven fastjson 最新版本_maven fastjson 最新版本_04

如果没有,那么就 cd 一路进去再输呗。

3.3 本地预测

一般对于测试线和正式线这种大家共用的系统来说,发版失败,大家都得等,为了避免这种尴尬,我一般会在打包完成之后,使用命令在本地执行一下jar包,探探虚实。

首先进入target目录,毕竟要找的jar包在人家目录下,得经过人家允许,是吧!

使用命令,开始模拟启动。

java -jar jar名.jar

maven fastjson 最新版本_jar_05