1

Java で記述されたソフトウェア プロジェクトでは、多くの場合、プロジェクトの一部であり、クラスパスに含める必要があるリソースがあります。たとえば、クラスパス (getResource) を介してアクセスできる必要があるいくつかのテンプレートまたはイメージです。これらのファイルは、生成された JAR ファイルに含める必要があります。

これらのリソースをリビジョン管理システムに追加する必要があることは明らかです。しかし、これらのファイルをどのディレクトリに置いたのでしょうか? java-source-files と並行して、または必要なパッケージ構造を再現する別のディレクトリにありますか?

4

7 に答える 7

4

Mavenはそれらを src/main/resources/ に配置します (Java コードは src/main/java/ に移動します)。主な理由は、Maven はさまざまな言語でコードをコンパイルできるため、コンパイルを別のファイルと混同しないように、それらを分離しておくことが理にかなっているからです。

リソースの場合、Maven は、Jar に追加される前にそれらの変数を置き換えるため、「コンパイル済み」ソースでもあります。

于 2008-12-08T15:10:12.690 に答える
2

ソースコードのパッケージ構造を模倣する別のディレクトリです。この方法では、ソース コードが破壊されることはありませんが、パッケージ化された JAR ファイル内のコンパイルされたクラス ファイルのすぐ隣に配置されます。

于 2008-12-08T15:10:32.643 に答える
2

それはあなたの好みに依存します。それらをソースコードファイルと混合すると、パッケージの名前変更などのリファクタリングが容易になります (リソースがソースと一緒に移動されるため)。

今日のツールでは、それもあまり重要ではありません。Eclipse、Netbeans、その他のツールのいずれを使用しても、ソース コードとは異なるレイアウトのバイナリ パッケージを使用できます。だから最後は自分の好きなようにできます。

個人的には、ソースとリソースを混在させないようにしています。通常、リソースを変更することはめったにありませんが、ソース コードは頻繁に変更するからです。

于 2008-12-08T15:23:33.333 に答える
2

私は通常、次のように行きます:

project/src
project/resources
project/classes
project/lib
project/dist

srcリソースの両方にパッケージ構造があり、ビルド ファイルはクラスリソースをdistに配置された jar の入力として受け取ります。

内部で実行する場合、クラスパスはlib;classes;resources;のようになります。

アプリにインストールがある場合、インストーラーはリソース ディレクトリを作成し、そのままインストールに配置します。

于 2008-12-08T15:40:39.713 に答える
2

個人的には、それらがコードの特定の部分に強く関連している場合、およびそれらの数が多すぎない場合は、ソース コードと一緒に含めることを好みます。

しかし、これらのファイルが独自の組織構造を持つことが理にかなっている場合、または何百ものファイルがあり、それらの中でソース コードを見つけるのが難しい場合は、それらを分けておきます。

于 2008-12-08T15:06:26.333 に答える
0

ビルド ツールが混乱しない場合は、これらのものをクラスパスに入れることができます。Eclipse は jpeg をコンパイルしようとしないし、Ant もコンパイルしようとしないので、あまり心配する必要はありません。良い点は、関連するものがたくさんある場合、それらをまとめて、ファイルの種類ではなく機能ごとに整理できることです。

私が働いている場所ではこれを行っています。少しのコードと少数の静的リソースを必要とする電子メール メッセージがあります。これらはすべて、Java ソース パス内の 1 つのフォルダーにまとめられています。システムから電子メールを簡単に追加および削除できます。物事を忘れたり、src/resource パスの不一致や、あるツリーの孤立ファイルが別のツリーに存在しないなどの間違いを犯したりすることはありません。

于 2008-12-08T15:25:21.663 に答える
0

すでに述べたように、それはあなた次第であり、プロジェクトごとに異なる場合があります。たとえば、Wicket.htmlでは、クラスのすぐ隣にファイルを配置するのが非常に一般的で実用的です。META-INFまた、いくつかの構成をソース コードと一緒に保持することがよくありますWEB-INF

Maven にソース ツリーからリソースを取得させるには、次のようにします。

<build>
   <resources>
     <resource>
         <directory>src/main/resources</directory>
     </resource>
     <!-- Web - Wicket -->
     <resource>
         <filtering>false</filtering>
         <directory>src/main/java</directory>
         <includes><include>**</include></includes>
         <excludes><exclude>**/*.java</exclude></excludes>
     </resource>
  </resources>

  <testResources>
     <testResource>
         <directory>src/test/resources</directory>
     </testResource>
     <!-- Web - Wicket -->
     <testResource>
         <filtering>false</filtering>
         <directory>src/main/java</directory>
         <includes><include>**</include></includes>
         <excludes><exclude>**/*.java</exclude></excludes>
     </testResource>
  </testResources>

リソースを分離しておく主な理由は、(imho) 仕事の役割の分離です。たとえば、翻訳チームを含むプロジェクトがある場合、コードから分離された文字列と異なる SCM 権限を持つリソースを保持します。

于 2011-07-10T23:45:30.267 に答える