web-dev-qa-db-ja.com

Maven-JarとWarを生成する

別のプロジェクトで使用するCXF WSプロジェクトがあり、このWSをWebプロジェクトで使用しますが、Jarファイルを生成する方法がわかりません。

アイデアや例はありますか?

ありがとうございました

21
Mohamed

Maven-war-pluginは、クラスのみを含む別のアーティファクトの作成をサポートします。

http://maven.Apache.org/plugins/maven-war-plugin/war-mojo.html

「attachClasses」パラメーターを参照してください。 jarプラグインを追加したり、パッケージを台無しにしたりする必要はありません。 warManagementプラグインをpluginManagementに追加して、これをオンにします。

しかし、これはあなたが望むものではないことを恐れています。 CXF Webサービスを使用するには、クライアントが必要です。クライアントを取得するには、クライアントスタブを生成および使用する方法について、CXFサンプルの指示に従ってください。このために別のMavenプロジェクトが必要になります。

32
bmargulies

これをビルドセクションに追加してみてください。

<build>
  <plugins>
    <plugin>
      <groupId>org.Apache.maven.plugins</groupId>
      <artifactId>maven-jar-plugin</artifactId>
      <executions>
        <execution>
          <id>make-a-jar</id>
          <phase>compile</phase>
          <goals>
            <goal>jar</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

以下をwarプロジェクトのpom.xmlに追加します。

<attachClasses>true</attachClasses> warプラグインの構成

<groupId>com.yourorg.foobar</groupId>
<artifactId>hello-world</artifactId>
<packaging>war</packaging>
<version>1.0</version>
<name>hello</name>

<build>
    <plugins>
        <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>3.0.0</version>
            <configuration>
                <attachClasses>true</attachClasses>
            </configuration>
        </plugin>
    </plugins>
</build>

Jar of warプロジェクトをインポートするプロジェクトのpom.xmlに以下を追加します

<classifier>classes</classifier>依存関係のインポート

<dependency>
    <groupId>com.yourorg.foobar</groupId>
    <artifactId>hello-world</artifactId>
    <version>1.0</version>
    <classifier>classes</classifier>
</dependency>
15
Nilesh

これは、プロパティを介してそれを達成する1つの方法です。デフォルトでは、warファイルを生成し、jarにプロパティを設定するだけです。

mvn install -Dp.type=jar

pom.xml

<properties>
   <p.type>war</p.type>
</properties>
<packaging>${p.type}</packaging>
6
Daniel De León

これは動作するはずです:

<!-- Maven JAR plugin -->
<plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <executions>
        <execution>
            <id>jar-services-provided</id>
            <phase>compile</phase>
            <goals>
                <goal>jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>

<!-- Install the jar locally -->
<plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-install-plugin</artifactId>
    <executions>
        <execution>
            <phase>install</phase>
            <goals>
                <goal>install-file</goal>
            </goals>
            <configuration>
                <packaging>jar</packaging>
                <artifactId>${project.artifactId}</artifactId>
                <groupId>${project.groupId}</groupId>
                <version>${project.version}</version>
                <file>
                    ${project.build.directory}/${project.artifactId}-${project.version}.jar
                </file>
            </configuration>
        </execution>
    </executions>
</plugin>

このブログ から取得。

5
aliopi

mvn packageプロジェクトのパッケージングjar以外の場合を除きます。次に、 プラグインの使用法ページ で説明されているように、最初の答えが示したように、 jarプラグイン実行を追加 する必要があります。さらに良いことに、それがjarでない場合は、2つのモジュールに分割します。1つは再利用可能なコードを含むjarで、もう1つはそれを使用するモジュールです。

2
Ryan Stewart

これを実現する最良の方法は、Maven Assemblyプラグインを使用して、jarの最終名を制御することです。

Pom.xmlに次のプラグインを追加します。

     <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-Assembly-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <descriptors>
                    <descriptor>Assembly.xml</descriptor>
                </descriptors>
                <finalName>${artifactId}-${version}</finalName>
                <appendAssemblyId>false</appendAssemblyId>
            </configuration>
        </plugin>

Assembly.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}</directory>
      <outputDirectory>/</outputDirectory>
      <includes>
        <include>**/*</include>
      </includes>
    </fileSet>
  </fileSets>
</Assembly>

最終的に以下のコマンドでプロジェクトをビルドできます:

mvn clean packageアセンブリ:シングルインストール

1
Gaurav

Mavenプロジェクトのパッケージングを戦争に向けて検討する

<project xmlns="http://maven.Apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>com.sample</groupId>
    <artifactId>sample</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>

次の実行をmaven-install-pluginに追加します

    <plugin>
        <groupId>org.Apache.maven.plugins</groupId>
        <artifactId>maven-install-plugin</artifactId>
        <version>2.5.2</version>
        <executions>
            <execution>
                <phase>package</phase>
                <configuration>
                    <packaging>jar</packaging>
                    <file>${project.build.directory}\${artifactId}-${version}.jar</file>
                </configuration>
                <goals>
                    <goal>install-file</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
0
myset