2

まず第一に、私のMavenの知識は限られているので、我慢してください。;-)現在3つのモジュールで構成されている単純なMavenプロジェクトがあります。アプリケーションのコアを含むモジュールはコア(クリエイティブ名、ハァッ?:-))と呼ばれ、他のモジュールは基本的にこのコアモジュールのプラグインです。制限が1つあります。コアモジュールに追加できるプラグインは1つだけです。

コアモジュールには、プラグイン構成を除いた独自のSpringIoC構成があります。これは非常に簡単です。コアコードは、コア構成で定義されていない「plugin」という名前のBeanを読み取ります。プラグインモジュールは、コアコードで使用される「plugin」という名前のBeanを提供する独自の構成ファイルを出荷します。これは私のユースケースに完全に適合します。

システムをデプロイする管理者、コア、選択されたプラグイン、および適切なデフォルト構成を含むディストリビューションを構築する簡単な方法を提供したいと思います。たぶん、tar.gzまたはそのようなもの。彼に私のSpringIoCファイルを掘り下げたり、一緒にコピーしたりしてほしくない。TCP/IPポートのような実際の設定はプロパティファイルで行われる。

私が何を意味するのかを明確にするために、私はサンプル構造を構築しました。ファイル名は説明のみを目的としていることに注意してください。

/bin/core.jar[コアモジュールからビルド]  
/bin/plugin.jar[プラグインモジュールからビルド]

/lib-bin/library-required-by-plugin.jar[依存関係はmaven+コピーによって解決されました]
/lib-bin/library-required-by-core.jar[依存関係はmaven+コピーによって解決されました]
/lib-bin/another-library-required-by-core.jar[依存関係はmaven+コピーによって解決されました]

/etc/spring/core-beans.xml[コアモジュール/etc/からコピー]
/etc/spring/plugin.xml[プラグインモジュール/etc/からコピー]
/etc/default-core-config.properties[コアモジュール/etc/からコピー]
/etc/default-plugin-config.properties[プラグインモジュール/etc/からコピー]

私は現在、アセンブリプラグインをいじっていますが、円を描いて回っているようで、何も機能しません。かなりイライラする。さらに情報が必要な場合、または私のポイントがわからない場合は、お気軽にお問い合わせください。:-)

私の質問を明確にするための追加:それを行う方法は?(まあ、それはとても単純です:-))前に述べたように、Mavenについての私の知識は限られており、アセンブリプラグインが進むべき道であるかもしれないことを知っていても、現在私はどこにも行きません。特に、各モジュールから依存関係を取得する方法、プラグインを構成する場所(親プロジェクト内?)、およびアセンブリ記述子のビットでさえ、大いに役立ちます。

ご入力ありがとうございます!

4

2 に答える 2

1

アセンブリプラグインを使用して、コマンドラインアプリケーションのディストリビューションを次のようにパッケージ化しました。

  • pomでアセンブリプラグインを定義します。これには、プラグインをビルドライフサイクル
    のパッケージフェーズにバインドすることが含まれます
<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.2-beta-3</version>
    <configuration>
        <descriptors>
            <descriptor>src/main/assembly/bin.xml</descriptor>
        </descriptors>
    </configuration>
    <executions>
        <execution>
            <id>assembly</id>
            <phase>package</phase>
            <goals>
                <goal>assembly</goal>
            </goals>
        </execution>
    </executions>
</plugin>
  • アセンブリ記述子を定義します。つまり、配布可能なアーカイブの内容と構造を指定します。以下に私のものを示します。
<assembly>
  <id>bin</id>
  <includeBaseDirectory>false</includeBaseDirectory>
  <formats>
      <format>zip</format>
  </formats>
  <fileSets>
      <fileSet>
          <directory>target</directory>
          <includes>
              <include>ctmemapi.properties</include>
              <include>ctmxml/*</include>
              <include>scampa</include>
              <include>*.bat</include>
              <include>*.sh</include>
          </includes>
          <outputDirectory>${project.artifactId}-${project.version}</outputDirectory>
          <fileMode>755</fileMode>
      </fileSet>
      <fileSet>
          <directory>target</directory>
          <includes>
              <include>scampa*.jar</include>
          </includes>
          <outputDirectory>${project.artifactId}-${project.version}/lib</outputDirectory>
          <fileMode>644</fileMode>
      </fileSet>
      <fileSet>
          <directory>src/test/data</directory>
          <outputDirectory>${project.artifactId}-${project.version}/test-data</outputDirectory>
          <fileMode>644</fileMode>
      </fileSet>
  </fileSets>
  <dependencySets>
      <dependencySet>
          <outputDirectory>${project.artifactId}-${project.version}/lib</outputDirectory>
          <fileMode>644</fileMode>
      </dependencySet>
  </dependencySets>
</assembly>
  • 次のコマンドのいずれかを使用してアセンブリを作成します

    mvn assembly:assembly
    mvn package
    mvn install
    mvn deploy

于 2010-01-05T21:26:25.217 に答える
0

確認を期待しているだけの場合は、説明した状況がMavenアセンブリプラグインの完全なユースケースであることを確認します。制限に対処するために、個別のプロファイルを使用するだけです(「コアモジュールに追加できるプラグインは1つだけです」)。

より具体的なガイダンスが必要な場合は、具体的な質問を追加してください:)

于 2010-01-05T18:58:53.530 に答える