使用maven assembly完美Docker化Java与C++混合工程
我们都知道基于maven的Java工程,使用mvn package命令即可实现构建,Docker化只需将构建结果COPY到镜像中就完成了,如果是Spring Boot工程,只需要拷贝一个jar进去。
但是,如果我们的工程是一个Java和C++混合的工程,Docker化就没有那么简单了。
C++构建的so文件不像Java构建的jar,可以直接复制到镜像中(只要镜像中的Java版本和构建环境中的版本一致),so与操作系统环境上的很多因素有关,我们不敢贸然将实现构建好的so复制到镜像中。这就要求我们要将C++的源代码复制到镜像中,然后在镜像中构建,最后删除源代码。
随之而来的问题是,C++的源代码如何使用mvn命令一起打包?为什么会有这样的疑问呢?因为在持续集成/持续发布的流程中,从我们提交代码到工程以Docker镜像的形式上线,需要经历构建