1

私はこれらのモジュールを使用してマルチモジュールMavenプロジェクトに取り組んでいます

parent
  |-- restful    // this is a jersey restful service as a WAR
  |-- shared     // some stuff shared by all other modules as a jar
  |-- cl-client  // a commandline client to the restful service, needs assembly

親pom.xmlは、dependencyManagementを使用して、すべてのモジュールで使用されるすべての依存関係を一覧表示します

cl-clientのpomには、パッケージフェーズで実行されるように構成されたアセンブリプラグインが含まれています。

    <plugin>
      <artifactId>maven-assembly-plugin</artifactId>
      <version>2.4</version>
      <executions>
        <execution>
          <id>distro-assembly</id>
          <phase>package</phase>
          <goals>
            <goal>single</goal>
          </goals>
          <configuration>
            <descriptors>
              <descriptor>src/main/assembly/assembly.xml</descriptor>
            </descriptors>
          </configuration>
        </execution>
      </executions>
    </plugin>

そして、assembly.xmlは次のとおりです。

<assembly>
  <id>commandlinable</id>
  <formats>
    <format>dir</format>
  </formats>
  <includeBaseDirectory>false</includeBaseDirectory>
  <moduleSets>
    <moduleSet>
      <useAllReactorProjects>true</useAllReactorProjects>
      <includes>
        <include>my:cl-client</include>
      </includes>
      <binaries>
        <outputDirectory>${artifactId}</outputDirectory>
        <unpack>true</unpack>
        <dependencySets>
          <dependencySet>
            <outputDirectory>${artifactId}/lib</outputDirectory>
            <useProjectArtifact>true</useProjectArtifact>
            <unpack>false</unpack>
            <scope>runtime</scope>
          </dependencySet>
        </dependencySets>
      </binaries>
    </moduleSet>
  </moduleSets>
</assembly>

を実行するmvn packageと、cl-clientモジュールは正常にアセンブルされ、期待したディレクトリを作成しますが、唯一の問題は、「restful」によってのみ使用されるものも含め、すべての依存関係jarがlib/ディレクトリにコピーされることです。ジャージ関連のjarファイルなどのモジュール。旗をひっくり返してみましたuseProjectArtifactが、何の違いもありませんでした。

ですから、cl-clientモジュールに必要なjarのみを含めるようにMavenアセンブリに指示できるかどうか疑問に思っています。マルチモジュールプロジェクトのMavenアセンブリに関するかなりの数のオンラインリソースを調べましたが、明確な答えを得ることができませんでした。

4

1 に答える 1

1

コマンドを使用してmvn dependency:tree、モジュール間に存在する依存関係を理解し​​ます。おそらく、アーティファクトがジャージに推移的な依存関係を持っていることに気付くでしょう。これが、それが含まれている理由です。

于 2013-04-30T07:56:19.767 に答える