2009-04-15 21 views
21

特定の方法(jarファイルではない)でビルドおよびデプロイされているアーティファクトがあります。展開の過程で、warファイルが作成されます。maven追加のjarファイルをデプロイ

アーティファクトもjarファイルとして別の場所に配置されるように、どのようにpomを構成できますか?

+1

あなたが構築し、展開している「特定の方法」とは何ですか? 「展開中」とは何を意味していますか?あなたの現在のPOMのサンプルは、この質問をより明確にするのに役立つかもしれません。 –

答えて

2

pomファイルの依存関係にアーティファクトの対応する依存関係を追加する必要があります。

例:

<dependency> 
     <groupId>org.apache.myfaces.core</groupId> 
     <artifactId>myfaces-api</artifactId> 
     <version>1.2.2</version> 
     <scope>compile</scope> 
</dependency> 
+0

アーティファクトをそれ自身に依存させますか?これがどのように展開に影響を与えるのか分かりません。そして、実際には、mavenは結果の循環参照を好まない。 –

5

「Mavenの方法は、」別のモジュールにsrc/main/javaを分割し、その依存warファイルを持つことです。

このアプローチに絶対に抵抗している場合は、プロファイルを使用してpackaging要素の内容を変更することができます。私はそれが可能かどうかは分かりません。

+1

パッケージ内のパッケージを直接変更することはできませんが、パッケージをプロパティに依存させ、そのプロパティをプロファイル内で変更することができます。 –

3

これを分けることは正しい方法です。強制的に同じモジュール内にwarとjarを生成することは可能ですが、問題を引き起こします。

+0

どの問題がありますか? jarが必要な場合、そのモジュールによって生成されます...そのjarが常にそのモジュールによって生成されている限り、あなたはうまくいくはずです(そしてそのJarに依存します)。あなたが念頭に置いていたより具体的な問題がある場合は... – smaudet

0

この問題を解決する1つの方法は、モジュールにjarをビルドしてから、その戦争のWEB-INF/libにjarファイルを作成するためにアセンブリプラグインを使用することです。これに対して強くお勧めします。 jarプロジェクトと、両方のモジュールを構築する親プロジェクトを持つ戦争プロジェクトの方が良いでしょう。

20

このblog postとそのコメントには答えがあります。

これらの3つのプラグイン構成では、戦争と並行してjarバージョンを構築/インストール/展開できます。

<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> 
<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> 
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-deploy-plugin</artifactId> 
    <executions> 
     <execution> 
      <phase>deploy</phase> 
      <goals> 
       <goal>deploy-file</goal> 
      </goals> 
      <configuration> 
       <packaging>jar</packaging> 
       <generatePom>true</generatePom> 
       <url>${project.distributionManagement.repository.url}</url> 
       <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> 
+0

説明したようにmaven-install-pluginを使用すると、アンドロイドMavenプラグインを使用して生成されたjarファイルをインストールしようとしたときに遭遇したのと同じ問題が解決されました。包装はaarに設定されています。このような依存関係を持つNetbeans IDEの視覚的問題の回避策としてjarファイルが必要です。 – Amin

+0

自明のはずですが、プロジェクトが異なる名前のjarを作成した場合(またはビルドでfinalNameを設定した場合)、上記の代わりに$ {build.finalName} .jarに応じて調整する必要があります。ターゲットディレクトリを調べて、実際に生成されたjarファイルを確認します。 – smaudet

23

のMaven deploy手段はMavenのリポジトリはなく、アプリケーションサーバにアーティファクトを展開します。

このような設定の追加JARのアーティファクト:

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

は、プロジェクトにこの新しいアーティファクトを取り付けます

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>build-helper-maven-plugin</artifactId> 
    <version>1.7</version> 
    <executions> 
     <execution> 
      <id>attach-artifacts</id> 
      <phase>package</phase> 
      <goals> 
       <goal>attach-artifact</goal> 
      </goals> 
      <configuration> 
       <artifacts> 
        <artifact> 
         <file>some file</file> 
         <type>jar</type>       
        </artifact> 
       </artifacts> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 
+2

"build-helper-maven-plugin"を使って、私はwar、jar、test-jarを1つのプロジェクトからデプロイできました。残念なことに、新しいモジュールの作成はオプションではなく、それ以外の理由で技術的でした。これは命の恩人だった! – javashlook

+0

は私の時間を節約しました。 – Sohan

関連する問題