Eclipseワークスペース:その理由と理由


133

ワークスペースのさまざまな使用方法(プロジェクトごと、アプリケーションごと(マルチアセンブリかどうか)、プログラム言語ごと、ターゲットごと(Web開発、プラグインなど)など)を見て、読んだり、考えたりしたことがあります。まだ最善のアプローチが何であるか疑問です。

とにかくこれについての詳細な洞察をページに与えることはできませんか?

これには、いわば多くのサブ質問が含まれます。私が尋ねるべき具体的なサブ質問がすべてわからないので、Eclipse(およびワークスペース)のすべての側面がわからないので、私が探しているものの例を挙げましょう:

  • 何のために?
    • 食の開発はそれが使用されることをどのように意味しましたか?
    • 他の/ほとんどの人はどう思いますか?
    • どう思いますか?
    • ...?
  • どうして?
    • 構成の競合と共有のメリットはありますか?
    • ファイルスペースの理由はありますか?
    • パフォーマンス?
    • ...?

ああ、私は異なる言語とプロトコルを使用する開発者の最小限のユースケースについて話しており、必ずしもすべてが1つのプロジェクトですべてではない(例:一部のプロジェクトではphp、javascriptおよびxml、他のプロジェクトではC#、まだJavaおよびSQL)その他など)

編集2012-11-27:誤解しないでください。私はワークスペースの使用を疑うのではなく、それが意図されているように、または誰かがそれをより良く考えると思われる場合は、それを使用したいだけです。それで「何のため?」意味:最適な用途は何ですか?なぜ?" 実際には「何のために?」をターゲットにしています。つまり、答えの理由を教えてください。


14
まだわかりません。これは、すでにの目的を知っている人にとっては理にかなっているようで、他の誰にとってもこれが自明ではないことを理解するのは困難です。
Rafael Eyng

私もそれを取得できず、以下のすべてに同意しません*。また、完全ではありません(参照なし)。なぜ私はまだ答えを受け入れませんでした。*もちろん、意見や個人的な慣習ではない場合もあります。あれ、わかった。
e-motiv 2014

私はそれに答えようとしましたが、あまり良い答えではありませんが、その上に構築できると思います
Rafael Eyng

回答:


43

私は、Javaの世界で非常に不快に感じる誰かの私のビジョンを提供します。

それはなんですか

ワークスペースは、グループ化の概念です。

  1. (どういうわけか)関連するプロジェクトのセット
  2. これらすべてのプロジェクトに関連するいくつかの構成
  3. Eclipse自体の設定

これは、Eclipseにこれらの情報を通知するために管理するディレクトリを作成し、その中にファイルを配置することによって行われます(実行する必要はありません。実行されます)。明示的に行う必要があるのは、これらのファイルを配置するフォルダーを選択することだけです。そして、このフォルダーは、ソースコードを配置した場所と同じである必要はありません。

上記の各項目について:

  1. (どういうわけか)関連するプロジェクトのセット

Eclipseは常に特定のワークスペースに関連して開かれているようです。つまり、ワークスペースAワークスペースBに切り替える場合([ファイル]> [ワークスペースの切り替え])、Eclipseは閉じて再び開きます。ワークスペースAに関連付けられてい(そしてプロジェクトエクスプローラーに表示されていた)すべてのプロジェクトは表示されなくなり、ワークスペースBに関連付けられたプロジェクトが表示されます。したがって、Eclipseで開くプロジェクトは、はワークスペースに関連付けられている必要があります。

これは、プロジェクトのソースコードがワークスペース内になければならないという意味ではないことに注意してください。ワークスペースは、どういうわけか、ディスク内のプロジェクトの物理パスと関係があります(誰もが知っていますか?ワークスペース内を調べて、プロジェクトパスを指すファイルを検索しましたが、成功しませんでした)。

このようにして、プロジェクトは一度に複数のワークスペース内に存在できます。したがって、ワークスペースとソースコードを分離しておくのが良いようです。

  1. これらすべてのプロジェクトに関連するいくつかの構成

Javaコンパイラーのバージョン(1.7など)のようなものは、「バージョン」がここにあるかどうかはわかりませんが、ワークスペースレベルの構成であると聞きました。ワークスペース内に複数のプロジェクトがあり、それらをEclipse内でコンパイルする場合、それらすべてが同じJavaコンパイラーでコンパイルされます。

  1. Eclipse自体の設定

キーバインディングのようなものも、ワークスペースレベルで保存されます。したがって、ctrl + tabでタブを切り替える(スタックしない)ように定義した場合、これは現在のワークスペースにのみバインドされます。別のワークスペースで同じキーバインディングを使用したい場合(そして私はあなたが望んでいると思います!)、それらをワークスペース間でエクスポート/インポートする必要があるようです(そうである場合、このIDEは非常に奇妙な前提の上に構築されました)。こちらがこのリンクです。

また、ワークスペースは異なるEclipseバージョン間で必ずしも互換性があるとは限りません。 この記事では、Eclipseバージョンの名前を含むワークスペースに名前を付けることをお勧めします。

さらに重要なのは、ワークスペースにするフォルダーを選択したら、その中のファイルに触れないでください。問題が発生することがあります。

私がそれを使う良い方法だと思う方法

(実際、これを書いているので、これを上手に使用する方法がわかりません。それが私が答えを探していた理由です-私はここで組み立てようとしています)

  1. プロジェクト用のフォルダーを作成します。
    /projects

  2. プロジェクトごとにフォルダを作成し、その中にプロジェクトのサブプロジェクトをグループ化します。
    /projects/proj1/subproj1_1
    /projects/proj1/subproj1_2
    /projects/proj2/subproj2_1

  3. ワークスペース用に別のフォルダーを作成します。
    /eclipse-workspaces

  4. プロジェクトのワークスペースを作成します。
    /eclipse-workspaces/proj1
    /eclipse-workspaces/proj2


1
最後のセクションには説明が必要です。プロジェクト自体ではない場合、サブプロジェクトとは何ですか?これらのサブプロジェクトは、親プロジェクト全体を使用せずに、さまざまなワークスペース全体でどのように使用されるのですか?答えを改善するには、まずそれを見つける必要があります。
Rafael Eyng 2014

2
この回答は、質問全体に貢献しています。ただし、これはビットフォルダーに焦点を当てたものであり、一部の参照や引数を見逃しています。それにもかかわらず、それは有益です。ため息、これらの答えはすべて貢献しているので難しくなっており、私は1つの答えを受け入れることはできないと思い始めています。私はここで誰もポイントフリークではないことを望みます、そして私たちは受け入れられた答えなしでそれを残しますか?
e-motiv、2015年

@ RU-Bnさん、こんにちは。私は要点ではありません。私はEclipseワークスペースが何であるかを説明できればいいので、私はそれを知っていると確信できました。
Rafael Eyng、2015年

ねえ、私は特に最後の質問を誰かに向けたつもりはありませんでした。それは一般的なものでした。たぶん私はそれをコメントとして書いておくべきだった。
e-motiv、2015年

@ RU-Bn、絶対に、私はそれを悪い方法でとらなかった。たぶん私は自分自身をひどく表現したのかもしれません。
Rafael Eyng、2015年

37

ワークスペースの要点は、通常はアプリケーションを構成する一連の関連プロジェクトをグループ化することです。ワークスペースフレームワークはeclipse.core.resourcesプラグインに属し、設計上当然のことながら理にかなっています。

プロジェクトには性質があり、ビルダーは特定のプロジェクトに関連付けられています。1つのプロジェクトでリソースを変更すると、同じワークスペースにあるプロジェクトのコンパイルまたはその他の問題をリアルタイムで確認できます。したがって、私が提案する戦略は、作業するプロジェクトごとに異なるワークスペースを用意することですが、Eclipseのワークスペースがないと、プロジェクトと構成のコレクションという概念はなく、結局それはIDEツールです。

それが意味をなさない場合、Net BeansまたはVisual Studioがこれにどのように対処するかを尋ねますか?同じテーマです。Mavenは良い例です。関連するMavenプロジェクトのグループをワークスペースにチェックアウトすると、エラーをリアルタイムで開発して確認できます。ワークスペースでない場合、他に何を提案しますか?RCPアプリケーションは、その用途に応じて異なる獣になる可能性がありますが、本当のIDEの意味では、ワークスペースやプロジェクトのコンテキストよりも優れたソリューションは何なのかわかりません。ただ私の考え。-ダンカン


1
しかし、あなたの答えをありがとう。それは理にかなっており、少なくとも私はそれがどうあるべきかを知っています。詳細と、最初の文に関する(食への)リンクを添えてくれませんか。
e-motiv 2012年

5
「ワークスペースのポイントは、通常はアプリケーションを構成する一連の関連プロジェクトをグループ化することである」ことに同意しません。2つのアプリケーションを開発している場合、2つのワークスペースを用意する必要がありますか?なんてうるさい!すべてのカスタムパースペクティブ、キーバインディング、自動テキスト、およびその他の設定は、ワークスペースに関連付けられています。新しいアプリケーションを開始するたびに、それらを再作成する必要があります。私の意見では、2つのワークスペースが必要です。devと最新リリースです。ワークスペース内で、アプリケーションごとにWORKING SETを作成します。これは、ワークスペースとワーキングセットの使用方法です。
John Henckel 2013

2
John、たとえば、ワークスペース内の2つのアプリケーションがRCPアプリケーションであり、それぞれに異なるターゲットプラットフォームまたは異なるJavaコンパイラー準拠レベルが必要な場合、アプリケーションが2つのアプリを配置するまったく同じランタイム構成を必要としない限り、どうしますか1つのワークスペースで問題が発生します。使用したい設定の共通セットがあることを理解しています。そのため、新しいワークスペースをセットアップして組織または個人の設定やその他の設定をインポートできるように、設定のエクスポート/インポート機能があります。
ダンカンクレブス

1
興味深い点@JohnHenckel!ワーキングセットで問題が発生しましたが。Eclipseの一部の機能でしか機能しないようですが、すべて手動で設定できると思います(昨日、すべてのプロジェクトからすべてのタスクを取得できるタスクビューで行ったように)。ライブラリ関数、オートコンプリート、既存のメソッドなどについてもそれを実行できますか?さらに、ワーキングセットの使用方法に興味があります。@DuncanKrebs、設定のインポート/エクスポート機能を知りませんでした。ありがとう!これは、ワークスペースの使用方法の大部分を解決します。ありがとうございます。そして、議論/洞察を投げ入れるのをやめないでください!
e-motiv 2013年

1
私は日食に移動しました。以前は、「フォルダ」と呼ばれるこの新しいオペレーティングシステムの概念を使用してきました。フォルダは、プロジェクトを配置するファイルシステム上の場所です。そこからサブフォルダを持つことができます。関連プロジェクトの複数のフォルダを1つの親フォルダ内に配置することもできます。では、Eclipseなしで何ができるでしょうか?フォルダーと基本的なテキストエディターを使用し、コマンドラインからコンパイルして実行します。したがって、あなたの答えは、「ワークスペース」がどれほど有用であるかを私たち全員が知っているべきだと期待しているようですが、おそらく「フォルダ」について知っておく必要があります。
ガブリエルステープルズ2018年

3

基本的に、ワークスペースのスコープは2つのポイントに分けられます。

最初のポイント(およびプライマリ)は、それ自体が日食であり、設定とメタデータ構成(プラグインctr)に関連しています。プロジェクトを作成するたびに、eclipseはすべての構成を収集し、それらをそのワークスペースに保存します。同じワークスペースに何らかの方法で競合するプロジェクトが存在する場合、機能の一部が失われたり、Eclipse自体の安定性が失われたりする可能性があります。

そして、2番目(二次)に採用できる開発戦略のポイント。プライマリスコープが満たされ(そしてマスターされ)、プロジェクト関係(ライブラリ、パースペクティブctrなど)に関するさらなる調整が必要になると、個別のワークスペースを開始することが、開発の習慣または可能な言語/フレームワークの「動作」に基づいて適切になる場合があります。たとえば、DLTKは別のケージに入れられるべき獣です。フォーラムで多くの不満が機能しなくなったため(適切かどうかにかかわらず)、推奨される解決策は、現在のワークスペースから同等のプラグインの設定を削除することでした。

個人的には、使用されているプラ​​グインの現在の状態に伴う既知の問題に関連する個別のワークスペースに関しては、言語の区別に傾いていることに気付きました。できれば、プロジェクトを最小化することで、プロジェクトへの不満が少なくなります。プロジェクトを維持するバージョンはバージョン管理だけではありません。最後に、ロードの速度とパフォーマンスは、無関係なプロジェクトが存在するために多数の(不要な)プラグインがロードされた場合に発生する可能性がある問題です。結論; すべての人に1つの解決策はなく、問題を解決するマスターブループリントはありません。それは経験とともに成長するものですが、Lessはより多くです!


DTLKとはどういう意味ですか?

IDEを優先してテキストエディターを破棄した場合、最初のドライブは、オートコンプリートの便利さと、少なくとも構文エラーを回避するためのライブラリ(およびdocs)のビューです。どのような状況でも、この機能を危険にさらすことはありません。
Lazaros Kosmidis、2016

1

私は長年Eclipseを使用してきましたが、この "答え"は推測に過ぎません(今夜試してみたいと思います)。それが存在しないとして反対投票された場合、明らかに私は間違っています。

Oracleは、CMakeを使用して、MySQL Connector Cソースコード用のVisual Studio「ソリューション」を生成します。ソリューション内には、個別にまたはまとめて(ソリューションによって)コンパイルできる「プロジェクト」があります。各プロジェクトには独自のメイクファイルがあり、ソリューションの一部を他のプロジェクトとは異なる設定でコンパイルします。

同様に、Eclipseワークスペースが関連するメイクファイルプロジェクト(Eclipse)を保持できることを願っています。マスタープロジェクトは、その依存関係がさまざまな一意のメイクファイルプロジェクトをコンパイルして、その「ソリューション」を構築するための事前必要条件としてコンパイルします。(私のフォルダー構造は@Rafaelが説明するとおりです)。

したがって、ワークスペースを使用する良い方法は、異なるプロジェクトをソリューションに結合するVisual Studioの機能をエミュレートすることです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.