3

モデル ビュー コントローラー パターンを使用して webapp を開発します。modelパッケージは、独立して使用できるアプリケーションのコア API を表します。controllerおよびviewパッケージは、パッケージを使用してmodelWeb アプリケーションを生成します。

質問:modelパッケージのみの JARと、3 つのパッケージの WAR をビルドできるようにしたいと考えています。そして、3 つのパッケージを同じプロジェクトに保持したいと思います。webapp WAR には、スタンドアロン JAR と比較して補助ライブラリが含まれます。Mavenでこれを達成するにはどうすればよいですか? たとえば、2 つの別々の pom.xml ファイルを使用するソリューションはありますか? (私が知る限りpackaging、pom.xml で 2 つのオプションを選択することはできないため)

(この質問を見たことがありますが、3 つのパッケージを同じプロジェクトの一部にし、同じディレクトリの一部にしたいのです。)

また、私のプロジェクトでは従来の webapp 構造を使用しています (ここでは簡略化しています)。

my-app
-- pom.xml
-- src
----- main/
-------- java/
----------- model/
----------- view/
----------- controller/
-------- webapp/
---------- WEB-INF/
-------------classes/

target/従来のディレクトリに JAR を生成し、従来のディレクトリに webappを生成することはできsrc/main/webapp/ますか? (そして、尋ねられたように、さまざまなライブラリを含めて)

ご協力いただきありがとうございます。

4

2 に答える 2

7

Mavenアセンブリプラグインを見てください。

これを使用すると、必要な数の異なるアセンブリ記述子を使用でき、それぞれが独自のパッケージ化スキームファイルセット、および依存関係でカスタマイズされます。


pom.xmlのサンプルプラグイン構成は次のとおりです。

<build>
  <plugins>
     <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.4</version>
        <configuration>
            <descriptors>
               <descriptor>src/main/assembly/model.xml</descriptor>
            </descriptors>
        </configuration>
     </plugin>
  </plugins>
</build>

そして、モデルjarのサンプルアセンブリ記述子(src/main/assembly/model.xml

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
  <id>model</id>
  <formats>
    <format>jar</format>
  </formats>
  <includeBaseDirectory>false</includeBaseDirectory>
  <fileSets>
    <fileSet>
      <directory>${project.build.outputDirectory}/model</directory>
      <outputDirectory>/</outputDirectory>
      <includes>
        <include>**/*</include>
      </includes>
    </fileSet>
  </fileSets>
</assembly>

実行すると、プロジェクトpom.xmlmvn clean package assembly:singleから標準のmy-app.warファイルと、ターゲットパッケージのmy-app-model.jarの両方が生成されます。

于 2013-01-26T01:27:09.760 に答える
3

プロジェクトのデフォルトのパッキングとして「war」を好むと思います。これを行うためのより簡単な方法は、maven-jar-pluginを使用することです。

       <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-jar-plugin</artifactId>
           <version>2.4</version>
           <executions>
               <execution>
                   <phase>package</phase>
                   <goals>
                       <goal>jar</goal>
                   </goals>
                   <configuration>
                       <classifier>weibo4j</classifier>
                       <includes>
                           <include>model/**</include>
                       </includes>
                   </configuration>
               </execution>
           </executions>
       </plugin>
于 2013-01-26T05:58:14.193 に答える