目录

  • ​​需求描述​​
  • ​​Makefile 读取变量​​
  • ​​Makefile文件中定义变量​​
  • ​​Makefile从shell脚本中导入变量​​
  • ​​优先级​​
  • ​​1、导入shell中的变量​​
  • ​​2、传递参数​​
  • ​​3、内部变量​​
  • ​​4、全局变量​​

需求描述

Makefile需要从shell脚本中读取变量

Makefile 读取变量

# 打印版本号
.PHONY: echo-version
echo-version:
echo ${VERSION};

直接打印发现是空的

$ make echo-version
echo ;

可以读取环境变量

$ export VERSION='0.0.1' && make echo-version
echo 0.0.1;
0.0.1

可以通过命令行传递变量

$ make echo-version VERSION='0.0.1'
echo 0.0.1;
0.0.1

Makefile文件中定义变量

# makefile文件中定义变量
VERSION="0.0.2"

# 打印版本号
.PHONY: echo-version
echo-version:
echo ${VERSION};
$ make echo-version
echo "0.0.2";
0.0.2

Makefile从shell脚本中导入变量

# 打印版本号
.PHONY: echo-version
echo-version:
. ./version.sh && echo $${VERSION};

注意:使用两个​ ​$$​ ​​ 而不是 ​ ​$​

version.sh

#!/bin/bash

##################################
# 版本号
##################################

export VERSION='0.0.3'
$ make echo-version
. ./version.sh && echo ${VERSION};
0.0.3

优先级

原则:谁最后导入,谁的优先级最高

1、导入shell中的变量

version.sh

#!/bin/bash

export VERSION='0.0.1'

Makefile

# 打印版本号
VERSION='0.0.3'
.PHONY: echo-version
echo-version:
. ./version.sh && echo $${VERSION};

执行

$ export VERSION='0.0.4' && make echo-version VERSION='0.0.2'
. ./version.sh && echo ${VERSION};
0.0.1

2、传递参数

Makefile

# 打印版本号
VERSION='0.0.3'
.PHONY: echo-version
echo-version:
echo ${VERSION};

执行

$ export VERSION='0.0.4' && make echo-version VERSION='0.0.2'
echo ${VERSION};
0.0.2

3、内部变量

Makefile

# 打印版本号
VERSION='0.0.3'
.PHONY: echo-version
echo-version:
echo ${VERSION};

执行

$ export VERSION='0.0.4' && make echo-version
echo '0.0.3';
0.0.3

4、全局变量

Makefile

# 打印版本号
# VERSION='0.0.3'
.PHONY: echo-version
echo-version:
echo ${VERSION};

执行

$ export VERSION='0.0.4' && make echo-version
echo 0.0.4;
0.0.4

redisTemplate 利用incr 生成唯一编码 redistemplate自定义

Redis中传输的数据均需序列化,作为传输数据的类需要实现Serializable接口Redis官方提供了两个RedisTemplate,分别为RedisTemplate与StringRedisTemplate@AutoConfiguration @ConditionalOnClass(RedisOperations.class) @EnableConfigurationProperties(Re