6

Unix サーバーにデプロイする準備ができている Java コンソール アプリケーションがあります。アプリケーションを実行するためのシェル スクリプトを作成しています。

シェル スクリプトを 1 つのフォルダーに配置し、アプリケーション jar と依存 jar (Spring など) を別のフォルダーに配置し、プロパティ ファイル (「ライブ」に維持する必要があるもの) を別のフォルダーに配置する予定です。次に、シェルスクリプトで「jars」フォルダーと「properties」フォルダー内のファイルを反復処理し、それらをクラスパスに追加してから、最終的に Java を呼び出します...

これは「良い」展開構造ですか? 保守性と安定性を最大化するためにファイルを配置する方法に関するガイドラインはありますか? 避けるのが最善の、これを行うための明らかな「間違った」方法はありますか?

以前のプロジェクトでは、すべてのシェル スクリプト (Java プロセスを開始するものと開始しないもの) をスクリプト フォルダーに配置し、アプリケーション jar をライブラリ サブフォルダーと外部リソースにライブラリ jar を含むフォルダーに配置したことを追加する必要があります。構成サブフォルダーに。次に、すべてのファイルを明示的にロードするスクリプトを作成しました。書くのに長い時間がかかり、ライブラリ jar をアップグレードするたびに維持する必要があります。今度はもっとうまくやりたいと思います。また、アプリケーションの JAR をライブラリから分離する必要もないように感じます。

4

4 に答える 4

2

価値があるのは、これが私たちが使用するものです。

/
    /class
        //package hierarchy here, raw .class files
    /lib
        //library jars here, apache commons, gson etc, all .jars
    /conf
        //.properties files go here, including ones for libraries
    /doc
        //program documentation files, typically .txt
        /javadocs
            //java doc html root
    /sh
        //shell scripts including execute.sh and compile.sh

antビルドに使用しsrc、必要に応じてソース ツリー用のフォルダーを用意することがよくあります。このようにして、クラスパスに and を追加するだけで、変更されることはありませ/classん。/lib

于 2012-12-03T18:39:59.327 に答える
1

率直に言って、それが単なる小さなアプリである場合、私はそれをすべて下に置き/opt/<my_java_app>、dev で行ったのと同じようにディレクトリのサブ構造をそこに置きます。

UNIX の推奨プラクティスにさらに準拠したい場合は、実行可能ファイル (を含むjar) を に/usr/local/bin/<my_java_app>、構成ファイルを に/etc/<my_java_app>、ログ ファイルおよびその他のデータ ファイルを に配置し/var/<my_java_app>ます。

また、このドキュメントを参照することもできます。

于 2012-12-03T18:41:43.500 に答える
1

あなたのケースに適した構造は、いわゆるuberJarまたはoneJarであり、多くのユーティリティで作成できます。グーグルで検索してください。また、 http://www.jdotsoft.com/JarClassLoader.phpのような素敵なコードをお勧めします。

于 2012-12-03T18:33:35.807 に答える
0

システム ネイティブ パッケージをビルドし、システムのデフォルトを使用します。Debian を使用している場合は、ビルド システムから直接 .deb を作成します (たとえば、ant deb taskを使用)。rpm を使用する場合は、rpm タスクを使用します。そうすれば、他のアプリケーションと同じように、アプリケーションを簡単にデプロイ、アンデプロイ、および更新できます。

システム パッケージは/usr/share/java/AppName、ライブラリ (jar に使用) と構成 (to/etc/AppNameまたは/home/UserName/.AppName) を分離する必要があります。私がシンボリックリンクしている起動スクリプト/usr/bin。それを超えて、物事を機能させるのに大きな複雑さはありません。お使いのディストリビューションでよく知られている Java ベースのパッケージを見つけて、それらの起動スクリプト (特に VM を見つける魔法) をコピーすることをお勧めします。

于 2012-12-03T18:51:08.957 に答える