あなたが持っている2つの質問は密接に関係しています。メタデータから始めましょう。IDEのプロジェクトメタデータを追跡する方法を理解する最良の方法は、すでに確立されているプロジェクトがそれをどのように実行しようとしているのかを調べることです。
EclipseとNetbeansはどちらも、プロジェクトのルート内に作成されたプロジェクトフォルダーを使用して、メタデータを保持します(.settings
Eclipse、.nbproject
Netbeans)。ソースフォルダ、コンパイラターゲットディレクトリ、ソースレベルなどのメタデータは、ほとんどがXMLのメタデータファイルに保持されます。
おそらく、似たようなものをたどり、/src
and/classes
または/src/main/java
andなどの一般的なプロジェクトの原型を追加することを検討して/target
ください。これは、質問の2番目の部分であるコンパイルにつながります。
Netbeans自体はコンパイラを直接使用しません。Eclipseはそうしますが、それはEclipseが独自の内部コンパイラー実装を持っており、デフォルトのコンパイラーでは利用できない追加の警告と構成を提供するためです。あなたのIDEについては、Netbeansがプロジェクトを管理してコンパイルする方法を見てみましょう。Netbeansは、を呼び出す代わりにjavac
、Antと内部build.xml
ファイルを使用します。Antに慣れていない場合は、Antによって解釈および実行されるタスクをXMLで設定できるツールにすぎません。たとえば、Antを使用して、Javaソースコードをコンパイルし、ドキュメントを生成し、配布JARを作成できます。これは非常に強力なツールであり、ビルドプロセス全体を一種のスクリプトとして自動化できます。
あなたはこれと同じ考えに従うことができます。IDEの新しいプロジェクトには、build.xml
デフォルトのAntターゲットを使用してプロジェクトをビルドするデフォルトのファイルがあります。からプロパティファイルにアクセスすることもできるbuild.xml
ため、ソースディレクトリに関する情報を、ビルドスクリプトで使用するその他のカスタマイズ可能な情報とともにプロパティファイルに保存し、ビルドスクリプトにインポートできます。設定例を次に示します。
ファイル構造:
| Project root/
| .myideproject/
| build.xml
| project.properties
| ui.properties
| classes/
| <compiled .class files>
| doc/
| <generated javadoc files>
| lib/
| <3rd-party .jar files needed for compilation>
| src/
| <user .java files>
このbuild.xml
ファイルは、IDEがコンパイルに使用するものです。ユーザーにAntのインストールを要求するか(迅速で簡単なプロセス)、Netbeansのようにバンドルすることができます(より多くの作業が必要になります)。いずれの場合もbuild.xml
、ディレクトリ内にネストする.myideproject
と、ビルドファイルは次のようになります。
<project name="<User's project name>" default="compile" basedir="..">
<!-- ... -->
</project>
2つのことに注意してください:
- 「ユーザーのプロジェクト名」は、ユーザーがプロジェクトを作成するときに提供されます。
- 「デフォルト」属性は、ビルドファイル内のターゲットを指します。
- 「basedir」属性は、ビルドプロセスをリベースして、ではなくプロジェクトルートのディレクトリを指すようにし
.myideproject
ます。
project.properties
次に、ファイルをインポートする必要があります( ui.properties
UI関連のデータを保存するためのものであり、ビルドスクリプト用ではなく、ビルドスクリプトproject.properties
を正しく実行するために必要なすべてのものが含まれています)。これは、Antプロジェクトにプロパティをインポートする方法です。
<project ... >
<import file=".myideproject/project.properties" />
<!-- ... -->
</project>
project.properties
これにより、ディレクティブを使用してのすべてのプロパティが使用可能になります${propname}
。これで、ファイル内の構成可能なディレクトリになりsrc
、次のようにターゲットで使用できます。classes
project.properties
compile
<target name="compile">
<javac srcdir="${src}"
destdir="${target}"
classpath="${classpath}"
source="${src.jdk}"
target="${target.jdk}"
debug="on"
debugLevel="lines,vars,source" />
</target>
上記のターゲットの場合、プロパティファイルは次のようになります。
# delimits source directories containing .java files using ':'
src=src1:src2
# only 1 directory, it's where the .class files go
target=classes
# ':'-delimited list of jars or globs which are needed for compilation
classpath=lib/*
# Determines the -source value on the javac process
src.jdk=1.6
# Determines the -target value on the javac process
target.jdk=1.6
コメントはわかりやすくするためにあります。このプロパティファイルは、ユーザー入力を使用してIDEのUIから構築されるため、ソースフォルダーを追加または削除するsrc
と、プロパティファイルの値が自動的に変更され、プロセスを再構築できます。
これはあなたが始めるのに十分なはずです。考慮すべきいくつかの事柄:
- メインメソッドに使用するクラスを指定するために、IDEによって設定されたプロパティとともにタスク
run
を使用するターゲットが必要になります。java
- ユーザーが依存関係を自動的に解決するのに役立つMavenプロジェクトのサポートも検討することをお勧めします。これはあなたにとってはるかに多くの作業になるでしょう、そしてあなたはおそらくあなたがAntサポートを完了するまで待つべきです
- standard-out / err/inをAntプロセスからユーザーが操作できるものにリダイレクトする必要があります。標準入力をサポートする必要はありませんが、少なくとも標準出力/エラーをサポートする必要があります
コメントごとの最後のコメント:ビューを作成するためにJTree
拡張するカスタムノードクラスでを使用するDefaultMutableTreeNode
必要がありますが、プロジェクトのビューだけでなく、ファイル構造のビューである必要はありません。だから多分それは次のようなものかもしれません:
+ Project 1 Name
| + Source Folder 1
| <.java files>
| + Source Folder 2
| <.java files>
| + Source Folder 3
| <.java files>
+ Project 2 Name
| + Source Folder 1
| <.java files>
| + Source Folder 2
| <.java files>
| + Source Folder 3
| <.java files>
構造はファイルシステムに基づくことができますが、ソースディレクトリなど、ユーザーが必要とする情報のみを表示します。そこからそのアイデアを拡張できます。
頑張って、面白いプロジェクトのようですね。うまくいけば、私の提案がある程度意味をなし、あなたを助けることができます。何か説明が必要な場合はお知らせください。