2

それぞれ conf と resources フォルダーを持つ n 個の Java ライブラリーのセットがあり、これらの n 個の Java ライブラリーのいくつかに依存する Java プロジェクト X があるとします。 conf および resources フォルダーがコピーされ、dist フォルダーにマージされます。いいえ - それらを jar に埋め込まないようにします。

明らかに、ファイル名が重複すると問題が発生しますが、すべてのファイルに異なる名前があると仮定しましょう。

編集: 追加の関連する質問: プロジェクト X のフォルダーにコピーする必要なく、すべての依存プロジェクトの開発段階でプロジェクト X が conf とリソースを検出できるようにするにはどうすればよいですか。たとえば、X のメイン メソッドで [実行] をクリックしたときに、参照されるライブラリが使用するこれらのリソースを Netbeans が見つけられるようにしたいと考えています。

Edit2: 以下は、プロジェクト設定の架空の例です。

**Library 1:** Image Processing

conf: Processing configurations, log4j
resources: Training sets, etc.

**Library 2:** Machine Learning

conf: Training parameters, log4j
resources: Dependent C++ batch files (i.e. system calls)

**Library 3:** Reporting Tool

resources: Reporting templates

**Library 4:** Text Mining Toolkit

conf: Encoding, character sets, heuristics
resources: Helper PHP scripts

**Executable Project 1: **

Uses Library 1 to process images 
Uses Library 2 to do machine learning on processed images
Uses Library 3 to make reports

**Executable Project 2: **

Uses Library 4 to do text mining
Uses Library 2 to do machine learning on collected textual information
Uses Library 3 to make reports

実行可能プロジェクト 1 と 2 は、デプロイ後に構成ライブラリに異なるパラメーターを使用できると想定できます。

4

2 に答える 2

2

あなたの例では次のことがわかります。例としてライブラリ 1 を使用します。

ライブラリ 1:画像処理

conf: 処理構成、log4j リソース: トレーニング セットなど。

ランタイム構成のように聞こえる処理構成を含むライブラリ 1 があります。これは、作成された jar の一部である必要があることを意味します (src/main/resources などの場所)。同じことがlog4j構成にも当てはまります。jar (プロジェクトの src/main/resources.

次はリソース: トレーニング セットです。トレーニング セットを含む別の Maven プロジェクトを作成すると、これにより単一のアーティファクトが生成され、後でそれを例 1 に統合するために使用できます。複数のトレーニング セットがある場合は、異なるアーティファクトを作成し、通常の依存関係として使用するか、プロジェクトでそれらを使用するには、maven-dependency-plugin (または maven-remote-resources-plugin の場合もあります) を使用します。

このセットアップでは、ライブラリ 1 をローカル リポジトリにデプロイし、もちろんリポジトリ マネージャーにデプロイして、依存関係として使用できます。

同じアプローチを使用して、ライブラリ 2、3 などを処理できます。

maven-remote-resource-pluginを参照してください(これが役立つかどうかはわかりません)。

于 2012-09-19T19:20:13.193 に答える
2

dep をコピーして特定の場所にコピーできるmaven-dependency-pluginを見てください。

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>2.5.1</version>
        <executions>
          <execution>
            <id>copy</id>
            <phase>package</phase>
            <goals>
              <goal>copy</goal>
            </goals>
            <configuration>
              <artifactItems>
                <artifactItem>
                  <groupId>junit</groupId>
                  <artifactId>junit</artifactId>
                  <version>3.8.1</version>
                  <type>jar</type>
                  <overWrite>false</overWrite>
                  <outputDirectory>${project.build.directory}/alternateLocation</outputDirectory>
                  <destFileName>optional-new-name.jar</destFileName>
                </artifactItem>
              </artifactItems>
              <outputDirectory>${project.build.directory}/wars</outputDirectory>
              <overWriteReleases>false</overWriteReleases>
              <overWriteSnapshots>true</overWriteSnapshots>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  [...]
</project>
于 2012-09-19T18:32:42.620 に答える