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で使用されますが、他のアプリケーションでは必要な場合があります)
次の2つのdebパッケージを作成しようとしています。
/usr/share/my-app
my_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/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
my-app バイナリパッケージに lib バイナリパッケージの依存関係を追加します。
/usr/share/my-app/lib/shared-lib.jar
と/usr/share/java/shared-lib.jar
の間にシンボリックリンクを追加します。my-app.links
それはうまくいくでしょうか?同じソースパッケージから2番目のバイナリパッケージをビルドできますか?これは正しい方法ですか?