3

親モジュールと 2 つの子を持つ Maven プロジェクトがあります:ServiceAPI. Serviceモジュールは WAR であり、プロジェクトのすべてのソース ファイルが含まれていますが、モジュールAPIは純粋に Service モジュールのクラスのサブセットを含む jar を構築し、その jar をローカルの Maven リポジトリにデプロイするために存在します。

と の組み合わせを試してmaven-dependency-plugin、戦争maven-assembly-pluginをコピーして展開されたJAR に含めましたが、サービス モジュールから特定のクラスのセットだけを取り込む方法を見つけるのに苦労しています。太った戦争。ServiceAPI

APIの pom.xmlから:

<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
      <execution>
        <id>copy-dependencies</id>
        <phase>package</phase>
        <goals>
          <goal>copy-dependencies</goal>
        </goals>
        <configuration>
          <excludeGroupIds>...</excludeGroupIds>
          <outputDirectory>${project.build.directory}/lib</outputDirectory>
        </configuration>
      </execution>
    </executions>
  </plugin>
  <plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <executions>
      <execution>
        <goals>
          <goal>single</goal>
        </goals>
        <phase>package</phase>
      </execution>
    </executions>
    <configuration>
      <descriptors>
        <descriptor>assembly.xml</descriptor>
      </descriptors>
    </configuration>
  </plugin>
</plugins>

maven-jar-pluginモジュールの pom を使用してスリム JAR をビルドすることを考えましたServiceが、これは悪い習慣のようです。提案?

4

2 に答える 2

3

APIプロジェクトにデプロイするクラスが実際に含まれていて、Serviceモジュールがそれに依存していることをお勧めします。プロジェクトをモジュール化したい場合 (そうすべきです)、単一のコードベースをハックしようとするのではなく、Maven が望む方法でそれを行ってください。

于 2012-10-02T14:47:01.827 に答える
1

実装の詳細を から取り出してwar、別のモジュールに入れる必要があります。

.
├──pom.xml
├──サービスAPI
| | ├── pom.xml
| | └── src
| | └──メイン
| | └──ジャワ
| | └──コム
| | └──スタックオーバーフロー
| | └── SomeDao.java
├──サービス実装
| | ├── pom.xml
| | └── src
| | └──メイン
| | └──ジャワ
| | └──コム
| | └──スタックオーバーフロー
| | └── SomeDaoImpl.java
└──サービスウェブ
    ├── pom.xml
    └── src
        └──メイン
            └──ウェブアプリ
                └──WEB-INF
                    └──web.xml

service-implに依存しましょうservice-api。に依存service-webしますservice-impl

于 2012-10-02T15:13:00.333 に答える