如何为 Debian 打包 Maven Java 应用程序?

如何为 Debian 打包 Maven Java 应用程序?

我正在尝试打包一个使用 Maven 构建的 Java 应用程序。

我创建了该debian/文件夹,mh_make并且我一直在阅读/观看教程:

项目结构如下:

  • 父POM
  • my_app 子模块
  • my_app_lib 子模块(仅由 my_app 使用)
  • shared_lib 子模块(由 my_app 使用,但其他应用程序也可能需要)

我正在尝试创建两个 deb 包,这将:

  • /usr/share/my-app在(包 1)中安装 my_app 及其库
  • 安装共享库/usr/share/java(包2)

我现在已经创建了包 1 的一部分:

  • 安装了我的应用程序的主 jar/usr/share/my-app/my-app.jar及其依赖项 lib jar /usr/share/my-app/lib/my-lib.jar(通过my-app.install
  • 创建启动脚本/usr/share/my-app/bin/my-app并将其符号链接到/usr/bin(通过my-app.installmy-app.links

在 POM 中,我还设置了主类并指示 Maven 在 jar 的清单中添加类路径。

我的问题:

  1. 我如何强制mh_*脚本不是在or目录中安装my_appormy_app_lib工件和 POM ?我的poms文件供参考:/usr/share/maven-repo/usr/share/java
# The setup below does not work - my_app and my_app_lib are installed in /usr/share/maven-repo
pom.xml --ignore-pom
my_app/pom.xml --has-package-version --ignore-pom --no-usj-versionless --dest-jar=/usr/share/my_app/my_app.jar
my_app_lib/pom.xml --has-package-version --ignore-pom
lshared_lib/pom.xml --ignore
  1. 如何lib/为 Maven 生成的类路径设置前缀?我目前已经通过<classpathPrefix>lib/</classpathPrefix>在 POM 中添加 a 解决了这个问题,但我更愿意将其设置为打包过程的一部分,因为它是 Debian 特定的更改。
  2. 如何将共享库链接到我的应用程序?目前,我在想:
  • 像往常一样安装另一个<package>.poms

  • 将lib二进制包的依赖添加到my-app二进制包中

  • /usr/share/my-app/lib/shared-lib.jar在和/usr/share/java/shared-lib.jar之间添加符号链接my-app.links

    那行得通吗?我可以从同一个源包构建第二个二进制包吗?这是这样做的正确方法吗?

相关内容