Dotenvx能为Apache Maven做点什么?
Apache Maven是Java生态系统中最流行的构建工具之一,广泛应用于Java项目的构建、依赖管理和项目生命周期管理。
但是在某些场景下,我们可能需要在Maven构建过程中使用一些敏感信息,比如API密钥、数据库密码等,
典型的做法就是pom.xml
文件中使用${env.VAR_NAME}
来引用环境变量,然后在构建环境中设置这些环境变量即可。
典型的做法就是编写一个.env
文件,然后填写相关的环境变量,然后使用一些.env
支持的工具,如direnv,
just - task runner等工具,都比较简单的。
如果不想使用普通明文的.env
文件,而想使用Dotenvx加密版本的.env
文件,那么应该如何做呢?
最简单的办法就是直接运行dotenvx run -- mvn -DskipTests clean package
,这样dotenvx就会加载.env
文件,并解密相关的配置项并加载为环境变量,
然后运行mvn
命令即可。
如果你已经使用了direnv,那么你只需要在.envrc
文件中添加如下内容:
eval $( dotenvx decrypt --stdout --format shell )
当然还有一种更简单的做法就是Maven Wrapper,执行 mvn wrapper:wrapper -Dmaven=3.9.11
会生成mvnw
脚本,
然后你只需要修改mvnw
脚本,在脚本中添加如下内容:
eval $( dotenvx decrypt --stdout --format shell )
这样在执行./mvnw xxx
时,会自动调用dotenvx完成.env
文件的解密和加载工作,非常简单方便。
修改mvnw
脚本后,你可以将其提交到版本库中,这样其他同事在使用时,也可以直接使用./mvnw
脚本来完成构建工作。
当然,.env
提交到git仓库也是没有问题的,有加密保护,完全不用担心。
Tips: 这种方式同样适用于Gradle Wrapper。
Maven Wrapper对IDE工具也是友好的,如IntelliJ IDEA,在Maven设置项中,选择Use Maven Wrapper
即可,
这样IntelliJ IDEA就会使用mvnw
脚本来完成Maven构建工作,这样.env
文件也会被自动加载。
Maven Wrapper方式同时对CI/CD也比较友好,目标服务器安装好dotenvx命令行,然后构建时设置好DOTENV_PRIVATE_KEY
环境变量即可。
还记得以前使用CI/CD时,包括GitHub Actions,要设置一批环境变量,有时构建需要新的环境变量,本地也设置好,结果CI/CD环境忘记设置啦,
导致构建失败。现在就不用担心啦,只需要一个DOTENV_PRIVATE_KEY
环境变量即可,其他的配置项都在.env
文件中,随代码一起提交到git仓库,
你想修改就修改,完全不用担心环境变量同步的问题。