数週間前、仕事でEclipseを使用して作成されたJavaベースのバックエンドWebアプリケーションを引き継ぎました。アプリケーションの性質上、ローカルで適切にテストすることはできません。代わりに、テストネットワークで変更をテストする必要があります(SSH経由で接続するAWS Microサーバーに変更をプッシュする必要があります)。
これまで、前任者と同じ方法で変更をプッシュしました。Eclipseの[実行可能なJARファイルにエクスポート]オプションを使用してプログラムをコンパイルし、jarをリモートサーバーにscpして実行します。ただし、このプロセスには大きな問題があります。コンパイルには数秒しかかかりませんが、jarファイルは30 MBをはるかに超えており、通常のインターネット接続を介してオフィスからリモートサーバーにすべてをプッシュするのに10分以上かかります。私が特にひどい日を過ごしていて、たとえば、コードにいくつかの小さなバグを導入し、それらを1つずつ発見した場合、瓶全体を押しながら親指をいじると、合計で1時間以上を失うことになります。一連の1行の変更については以上です。
明らかに、変更のたびにjar全体をスキャンするよりも賢明な解決策は、変更された.javaファイルのみをソース管理からリモートでプルし、新しいバージョンを完全にリモートでコンパイルすることです。しかし、私はJava(そして実際にはプログラミング全般)にまったく慣れておらず、Javaの作業はすべて、開発の途中で引き継いだ既存のEclipseプロジェクトに基づいています。そのため、Javaのコンパイルについてはほとんど知りません。このオンラインに関するチュートリアルは、ほとんど不透明であるか、外部ライブラリを使用するコードをコンパイルする方法の問題に完全に対処できないことがわかりました。
ここでは、Eclipseから見つけることができるプロジェクトの依存関係に関する情報について説明します。質問は次のとおりです。リモートでコンパイルできるようにするには、リモートサーバーに何をコピーする必要があり、どこに置く必要がありますか。リモートサーバーでコンパイルできるようにするには、リモートサーバーにどのようなツールをインストールする必要がありますか?そして、すべてをセットアップしたら、コマンドラインで実際に何を入力してコンパイルしますか?
とにかく、依存関係とディレクトリ構造について私が知っていることは次のとおりです(アプリケーション名を「バニー」と呼んで匿名化しました)。
アプリケーションのソースコードはbunnies/srcにあります
bunnies / bin/main.jarにコンパイルします
バニー/依存関係には、私たちが使用する外部ライブラリの3つのjarファイルが含まれています。
Eclipseでプロジェクトを右クリックし、[Javaビルドパス]セクションに移動して、[ライブラリ]タブを選択すると、次のように表示されます。
- 上記の3つのライブラリ(「json-simple-1.1.1.jar-/home/mark/workspace/bunnies/dependencies」などの形式で表示されます)
- 別の場所にある4番目のjarファイル(「M2_REPO / com / google / guava / guava / r09 / guava-r09.jar-/home/mark/.m2/repository/com/google/guava/guava/r09/guava-r09 .jar」)
- JREシステムライブラリ[java-6-openjdk-i386]
しかし、もっとあります!また、mahout-coreとmahout-integrationの2つのライブラリを使用します。これらは、依存関係フォルダーのjarファイルとしてではなく、同じワークスペースに別々のプロジェクトとして含まれています。これらは、バニープロジェクトのJavaビルドパスセクションの[プロジェクト]タブに名前で表示され、それぞれ/ home / mark / worksheet/mahout-coreと/home/ mark / worksheet/mahout-integrationにあります。
私はJavaの専門家ではないので、おそらく私が見逃している他の隠された依存関係もいくつかありますが、それは私がこれまで見てきたどの場所にも現れませんか?
Eclipseの[エクスポート]オプションを使用せずに、コマンドラインからこの巨大な混乱をコンパイルする手順を誰かに説明してもらい、最終的にすべてをリモートでコンパイルできるようになれば、非常にありがたいです。