Debian用Maven Javaアプリケーションをパッケージ化するには?

Debian用Maven Javaアプリケーションをパッケージ化するには?

Mavenで構築されたJavaアプリケーションをパッケージ化しようとしています。

debian/フォルダを作成し、mh_makeチュートリアルを読んで視聴しました。

プロジェクト構造は次のとおりです。

  • 親POM
  • my_app サブモジュール
  • my_app_libサブモジュール(my_appでのみ使用)
  • shared_libサブモジュール(my_appで使用されますが、他のアプリケーションでは必要な場合があります)

次の2つのdebパッケージを作成しようとしています。

  • /usr/share/my-appmy_appとそのライブラリを(パッケージ1)にインストールします。
  • 共有ライブラリのインストール/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/binmy-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

  • my-app バイナリパッケージに lib バイナリパッケージの依存関係を追加します。

  • /usr/share/my-app/lib/shared-lib.jar/usr/share/java/shared-lib.jarの間にシンボリックリンクを追加します。my-app.links

    それはうまくいくでしょうか?同じソースパッケージから2番目のバイナリパッケージをビルドできますか?これは正しい方法ですか?

関連情報