我必须为我当前项目中的所有应用程序创建 Debian 包。这些是像“java -jar ....”一样启动的独立应用程序。每个项目都提供自己的 JAR 工件,该 JAR 工件依赖于其他几个项目工件,并且有很多 3-rd 方依赖项(编译和运行时)。
现在我可以构建一个 debian 包,其中包含所有需要的 JAR(具有传递性的依赖项、一些资源文件、脚本等)。
我还在我的包的控制文件配置中指定了 JRE Debian 依赖项,因此也安装了 java。
我使用 codehaus unix-maven-plugin 创建 deb 包。
JAR 安装到 /usr/share/java,脚本安装到 /usr/bin 等。
只要我在服务器上安装了一个包就可以了:安装和运行时成功。但是,如果已经安装了一些提供我的包包含的 JAR 之一的软件(例如 slf4j-api-1.5.10.jar),我在安装包时会遇到问题。包管理器抱怨文件冲突。当我尝试将两个应用程序安装到显然提供一组相同 jar 文件的同一台服务器上时,也会发生这种情况。
我的问题的解决方案是不包含其他 debian 包可用的 JAR 文件,而是在控制文件的“依赖”部分中声明这些包。不幸的是,并非 maven 存储库中的每个 JAR 都有相应的 debian 包可用,但对于那些缺少的工件,我可以自己创建其他 debian 包。
是否有任何可用的方法将 maven 依赖项转换为 debian 依赖项列表(控制文件中的“Depends”部分),以便我的交付不会重新分发可作为外部 debian 包使用的 JAR 文件?
我可以在我的自定义 maven 插件中使用任何在线服务来查找可能为我的应用程序提供所需 JAR 的 debian 包吗?
谢谢