12


1

私はいくつかの外部jarファイルを参照し、ユーザーがアクセスできるようにするためにいくつかの設定ファイルを必要とするeclipseを使ったJavaアプリを書いています。

  1. 展開用にパッケージ化するための最良の方法は何ですか?

  2. 私の理解するところでは、Jarsを別のjarファイルに入れることはできません。これは正しいですか。

  3. 自分の設定ファイルをjarファイルから除外し、それでもコード内でそれらを参照することはできますか? それとも、設定ファイルへのパスをコマンドライン引数にする必要がありますか?

  4. これを容易にするために、Eclipse用のサードパーティ製プラグインはありますか? 私は現時点ではAntビルドファイルを使用していますが、自分のしていることがわからないのですが。

  5. Visual Studioには、必要なものすべてを見つけてインストーラを作成するだけのデプロイメントプロジェクトがありますか。 私は以前にinstall4jを使ったことがありますが、.Net配備プロジェクトほど自動化されていなければ強力でした。

乾杯。

7 Answer


6


最良の方法はありません。 それはあなたがswingアプリケーション、webstart、アプレット、ライブラリあるいはwebアプリケーションのどちらをデプロイしているかに依存します。 それぞれが違います。

ポイント2では、あなたは正しいです。 jarファイルに他のjarファイルを含めることはできません。 (技術的には可能ですが、内部のjarファイルがクラスパス上にないということです。つまり、実質的にjarファイルにjarファイルが含まれていないということです)。

3のポイントでは、あなたは確かにjarファイルの外側の設定ファイルを参照することができます。 通常、設定ファイルはファイルまたはリソースとして参照できます。 リソースアプローチを使用する場合、それは通常クラスパスから来ます(jarにある場合もあります)。 ファイルを使用する場合は、ファイル名を指定します(jarファイルではありません)。

一般に、ほとんどのJava開発者は Apache Antを使用してデプロイメントを実現します。 よく文書化されているので、見てください。


6


(1)あなたが考慮したいと思うかもしれないantの代わりは mavenです。

Mavenの簡単な紹介は こちらにあります。

JARを構築するために、Mavenは jarプラグインを持っています。瓶のマニフェスト。

eclipseを使用している場合は、 maven integrationもダウンロードしてください。

(2)もう1つの方法は OneJarを使用することです(免責事項:自分で試したことはありません)。


3


答えは、どのようなものを構築しているかによって異なります。

ライブラリを構築している場合は、作業内容をjarファイルとして配布するのが最善です。 あなたのjarマニフェストのClass-path属性を通してあなたのjar依存関係を参照することは可能です、私は一般的にそれがクールだと思いますが。 この属性はアプレット用に設計されたもので、libであまり使用されていないため、この手法でクラスパスにものが取り込まれると(特にユーザーが既に使用している一般的なもの)、予期しないバージョンの競合が発生します。 そして、なぜそれらを見ているのかを突き止めるのは困難です。

依存関係を追跡するためにpom情報を含むMavenリポジトリにjarを公開することは、ライブラリにとっても優れた選択肢です。 あなたがそうするならば、あなたのドキュメントにあなたのMaven座標を公開してください!

あなたがアプリを作成している場合、2つの一般的な選択は、zip / tar /配布構造のいずれかを配布すること、またはインストーラプログラムを使用することです。 プログラムがサーバー風のものであれば、前者の方がはるかに一般的です。 後者はクライアントにとってより一般的です。 一般的に、インストーラプログラムは単にデプロイメント構造をレイアウトし、OS固有の場所にインストールするなどの追加タスクを実行しようとしています。

展開構造(別名「キット」)を構築するには、使用している構築システムが何であれ、繰り返し可能なプロセスを作成する必要があります。 Antにはこれに関する豊富な例があり、Mavenには役立つプラグインがあります。 一般に、コードのjarファイル、依存関係、プログラムを起動するためのスクリプト、JREなど、必要に応じてその他のリソースを含めることをお勧めします。

インストーラを作成したい場合は、無料と商用の両方の選択肢があります。 私が知っている人の中には、最近無料の IzPackを使った経験がある人もいますが、あなたの選択肢を調べてください。


3


あなたは FatJarを試してみてください。 これはEclipseプラグインです。プロジェクトを右クリックするだけで、必要なサードパーティJARを含む、アプリケーションを実行するために必要なすべてのJARファイルを作成できます。

私たちは毎日それを JSmoothと組み合わせて使用​​して実行ファイルを作成し、ソフトウェアパッケージを顧客に展開し、そして魅力のように働きます。


1


スタンドアロンデスクトップアプリケーションの展開について話しているのであれば、次のようにします。

  • Webスタートに切り替える前に*私たちは3つのデプロイメントアーカイブを作成していました。1つはWindows用、もう1つは他のプラットフォーム用です。

Windowsでは、 Nullsoft Scriptable Install System(以前のwinampバージョンで使用されていることで知られています)とその antタスクを使用しました。 、ただしいくつかの欠点があります:

  • Windowsだけで使えるAFAIR

  • あなたは手でいくらかの仕事をしなければなりません、すなわち ウィザード作成スクリプトAFAIRのカスタマイズ

一方、スタートメニューのエントリを使ってWindowsインストールを作成することもできます。 統合NSISシェルスクリプト編集用のEclipseプラグインも存在します。

Mac OS Xには、ネイティブのos xアプリケーションのように起動できるように、javaファイルから.appファイルを作成するための ant taskがあります。 しかし、あなたの家のディレクトリに設定を書かず、代わりにアプリケーションのディレクトリを使うことには気を付けてください。

他の人たちにとっては、それらがun * x envに入っていることを期待し、アプリケーションを起動するためのシェルスクリプトであなたのアプリをデプロイしなければなりません。

どのような場合でも、アプリケーションのアクセス権を取得するには、カスタムの policyファイルをデプロイする必要があります。

あなたがすべてのパッケージとものを取り除きたいならば、あなたは真剣に web startを使うことを考慮するべきです。 切り替えてから時間を節約できました。 私たちの展開プロセスを簡素化し、アップデートなどの面倒を見ます

*アップデート2014 *

http://maven.apache.org/plugins/maven-assembly-plugin/usage.html[maven assembly plugin]を使用してください。セクション "実行可能jarの作成"を参照してください。


0


蟻。 それは世界で最高のものではありませんが、それは標準的であり、それはアパッチです、そしてそれは機能します。 簡単なbuild.xmlを作るための良い例がウェブ上にいくつかあります、そしてそれはjarファイルにすべての基本的なもの(クラス、web.xmlなど)を入れる方法を知っている 'war’タスクのようないくつかの機能を持っていますあなたのために。 他の設定ファイルやjarファイルを拾うように指示することもできますし、うまくいくでしょう。 何をコンパイルするかについてもとても賢いです。 ディレクトリを指定すると、すべてのJavaファイルが検索され、それらのクラスファイルが古くなった場合にのみビルドされるため、従来のmake機能のいくつかを無料で手に入れることができます。


0


他のJavaプロジェクトを見ることもできます(例: JMeter、SquirrelSQL、JEdit、Cernunnosなど) それぞれのアプリケーションは若干異なる方法でパッケージ化されているので、これらを検討するときには目標を検討してください。