我正在尝试打包一个使用 Maven 构建的 Java 应用程序。
我创建了该debian/
文件夹,mh_make
并且我一直在阅读/观看教程:
- https://wiki.debian.org/Java/Packaging/Maven
- https://wiki.debian.org/Java/MavenRepoHelper
- https://wiki.debian.org/Java/Packaging
- https://www.youtube.com/watch?v=p767bS_8C_o
- 还有更多我现在忘记的
项目结构如下:
- 父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.install
和my-app.links
)
在 POM 中,我还设置了主类并指示 Maven 在 jar 的清单中添加类路径。
我的问题:
- 我如何强制
mh_*
脚本不是在or目录中安装my_app
ormy_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
- 如何
lib/
为 Maven 生成的类路径设置前缀?我目前已经通过<classpathPrefix>lib/</classpathPrefix>
在 POM 中添加 a 解决了这个问题,但我更愿意将其设置为打包过程的一部分,因为它是 Debian 特定的更改。 - 如何将共享库链接到我的应用程序?目前,我在想:
像往常一样安装另一个
<package>.poms
将lib二进制包的依赖添加到my-app二进制包中
/usr/share/my-app/lib/shared-lib.jar
在和/usr/share/java/shared-lib.jar
之间添加符号链接my-app.links
那行得通吗?我可以从同一个源包构建第二个二进制包吗?这是这样做的正确方法吗?