2012-06-02 6 views
16

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

ご意見やご提案はありますか?あなたのproject's packagingjar以外の何かである場合を除き

<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> 

答えて

26

maven-war-pluginは、クラスだけを含む別の成果物の作成をサポートしています。

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

'attachClasses' パラメータを参照してください。 jarプラグインを追加したり、パッケージを混乱させる必要はありません。 warプラグインをpluginManagementに追加して、これを有効にしてください。

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

+0

これはいいですが、最近追加の ' classes'は普通ではありません。 – aliopi

20

てみてくださいありがとうございました。次に、plugin's usage pageに記載されているように、jar pluginadd an executionが必要で、最初の回答が示したとおりです。さらに、jarファイルではない場合は、再利用可能なコードを含むjarファイルと、それを使用するjarファイルの2つのモジュールに分割します。

+0

私がパッケージ化する位相を変更する必要があることと思われます。コンパイルするように設定されている場合は、pom.xmlにエラーがあります。 – Stony

+0

これはうまくいきましたが、maven-jar-pluginによって生成された* .jarを、maven-war-pluginによって構築されたwarパッケージの中にどのように含めますか? –

2

mvn package

は、あなたのビルドセクションにこれを追加すること

6

これはプロパティを使用してこれを達成する方法の1つです。 デフォルトでは、warファイルが生成されます。jarファイルを作成する場合は、プロパティを設定します。

mvn install -Dp.type=jar 

のpom.xml

<properties> 
    <p.type>war</p.type> 
</properties> 
<packaging>${p.type}</packaging> 
5

戦争プロジェクトののpom.xmlに以下を追加します。戦争プラグインの構成に

<attachClasses>true</attachClasses>

<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> 

あなたは依存関係の輸入に

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

jarファイルの名前を変更する方法はありますか? – barha

+1

答えは、http://stackoverflow.com/a/14490656/4417818です – Nilesh

3

を戦争プロジェクト

<classifier>classes</classifier>のjarファイルをインポートするプロジェクトののpom.xmlに以下を追加します。これはうまくいくはずです:

<!-- 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> 

から取られたthis blog。あなたの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> 

0

これを達成するための最良の方法は、このことにより、Mavenのアセンブリのプラグインを使用することにより、あなたはまた、jarファイルの最終的な名前を制御することができていますアセンブリ。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きれいなパッケージアセンブリ:単一インストール

関連する問題