5

2つの異なるプロジェクトがあります。そして、コントローラーは2つのプロジェクトでほぼ同じです。

プロジェクトAにはコントローラーがあります。したがって、それのために戦争を起こすことは問題ではありません。

しかし、プロジェクトBは、プロジェクトAコントローラーのコントローラーのjarファイルを必要としています。

プロジェクトBで使用できるプロジェクトAのコントローラーからjarファイルを生成する方法を教えてもらえますか?

4

3 に答える 3

13

このような場合のデフォルトの解決策は、2つの別々のモジュールを用意することです。1つは戦争用で、もう1つはコントローラーモジュール用です。Mavenとの戦いを開始しないでください。

于 2012-04-17T11:25:54.743 に答える
0

プロジェクトAのパッケージを戦争として保管してください。プロジェクトAのpom.xmlにmavenjarプラグインを追加します。「mvncleanpackagejar:jar」を使用してプロジェクトをビルドします。それは瓶と戦争の両方を作成します。

于 2017-05-03T14:04:30.623 に答える
0

@Shashankが指摘したように、mavenにmaven-jar-pluginを実行させることもできます。ただし、これにより、コンパイルされたクラスのみを含むJARのみが作成され、Webアプリケーションソースは作成されません。

mvn clean installマルチモジュールプロジェクトで、明示的に呼び出すことなく、単純なコマンドでそれを行う簡単な方法がありますmvn clean install jar:jar

にを追加しmaven-jar-plugin>build>plugins、「パッケージ」フェーズで呼び出します。

<project>
  <packaging>war</packaging>
  <!-- .. -->
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
          <classifier>classes</classifier>
        </configuration>
        <executions>
          <execution>
            <id>package-jar</id>
            <phase>package</phase>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
      </plugin>
    </plugins>
  </build>
</project>

これにより、大きな.warアーティファクトと小さな-classes.jarアーティファクトが作成されます。

アップデート2017-06-15:一方、JARファイルとしてマスクされたwarファイル(パッケージ化されたJavaクラスだけでなく)の正確なコピーが必要な場合は、との組み合わせを使用できます。WARのJARコピーを作成します。(私はたまたまそのような解決策を必要としていました-理由を聞かないでください;))maven-dependency-pluginmaven-install-plugin

warモジュールに依存する新しいモジュールを作成します。

<project>
  <!-- ... -->
  <dependencies>
    <!-- ... -->
    <dependency>
      <groupId>your-group-id-here</groupId>
      <artifactId>your-war-artifact-id-here</artifactId>
      <version>${project.version}</version>
      <type>war</type>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <id>copy</id>
            <phase>package</phase>
            <goals>
              <goal>copy</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <artifactItems>
            <artifactItem>
              <groupId>your-group-id-here</groupId>
              <artifactId>your-war-artifact-id-here</artifactId>
              <version>${project.version}</version>
              <type>war</type>
              <overWrite>true</overWrite>
              <destFileName>jar-copy-of-war.jar</destFileName>
            </artifactItem>
          </artifactItems>
          <overWriteReleases>false</overWriteReleases>
          <overWriteSnapshots>true</overWriteSnapshots>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-install-plugin</artifactId>
        <executions>
          <execution>
            <id>install-copy-of-war</id>
            <phase>install</phase>
            <goals>
              <goal>install-file</goal>
            </goals>
            <configuration>
              <packaging>jar</packaging>
              <classifier>copy-of-war</classifier>
              <artifactId>${project.artifactId}</artifactId>
              <groupId>your-group-id-here</groupId>
              <version>${project.version}</version>
              <file>${project.build.directory}/dependency/jar-copy-of-war.jar</file>
              <generatePom>true</generatePom>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

これにより、warのコピーが作成され、「-copy-of-war.jar」という名前が付けられますが、「copy-of-war」はこのモジュールの分類子です。

于 2017-06-14T10:48:58.923 に答える