1

私はjarファイルにコンパイルされた春のプロジェクトを持っています。このプロジェクトを A としましょう。プロジェクト A の依存関係にある別のプロジェクト B があります。プロジェクト B を制御することはできません。プロジェクト B は 2 つのファイルの形式で利用できます。1 つは実行可能な jar ファイルで、もう 1 つは zip ファイルです。この zip ファイルには、プロジェクトのすべてのリソースが含まれています。BI から API を呼び出すには、resourceLocationパラメーター (上記のリソース フォルダーの URL) を渡す必要があります。B.jar と B.zip の両方を A の pom に依存関係として含めました。

ここで、プロジェクト A の実行可能な jar-with-all-dependencies を作成します。他の依存関係とともに、B.zip のリソース フォルダーが jar 内に存在します。

ここでの問題: A の内部から B の API を呼び出すときに、 resourcePathを指定する必要があります。試してみました。および ./resources. しかし、Bはそれを理解していません。リソースフォルダーの絶対パスを取得してBに渡すにはどうすればよいですか。または、AとBに共通のクラスパスを設定します。

4

1 に答える 1

1

maven-dependency-plugin unpack zip to classpath unpack dependency zip resources フォルダーを試すことができます。これにより、成果物が A のクラスパスに追加されます。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.2</version>
    <executions>
      <execution>
        <id>unpack-sigar</id>
        <phase>package<!-- or any other valid maven phase --></phase>
        <goals>
          <goal>unpack-dependencies</goal>
        </goals>
        <configuration>
          <includeGroupIds>somegroupid</includeGroupIds>
          <includeArtifactIds>B</includeArtifactIds>
          <outputDirectory>
             ${project.build.directory}/src/main/resources             
          </outputDirectory>
        </configuration>
      </execution>
    </executions>
</plugin>
于 2016-10-24T11:40:32.107 に答える