2011-06-27 3 views
1

私はpom.xmlで設定されたweb-appを持っています。 このweb-appは、jarファイルを生成する別のmavenモジュールに依存しています。生成されたjarファイルのサイズを確認すると、8Koになります。私の/ libのWebアプリケーションでこの同じjarファイルをチェックすると、5Koです。Webアプリケーションの/ libに完全なjarをコピーするMaven warプラグインを取得するにはどうすればよいですか?

jarファイルが/ libディレクトリに到達すると、一連のクラスは単純に無視されます。 は、Webアプリケーションの実行時にClassNotFoundExceptionを引き起こします。

なぜ私の瓶はトリミングされますか?おそらく、あなたは差分を見ているよう

のWebアプリののpom.xml

<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/maven-v4_0_0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<parent> 
    <artifactId>record</artifactId> 
    <groupId>com.company.record</groupId> 
    <version>1.0.0</version> 
</parent> 
<groupId>com.company.record</groupId> 
<artifactId>record-webapp</artifactId> 
<packaging>war</packaging> 
<name>record-webapp</name> 
<version>1.0.0</version> 

<dependencies> 
    <!-- JSF 2.0 --> 
    <dependency> 
     <groupId>com.sun.faces</groupId> 
     <artifactId>jsf-api</artifactId> 
     <version>2.0.3-b02</version> 
     <type>jar</type> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>com.sun.faces</groupId> 
     <artifactId>jsf-impl</artifactId> 
     <version>2.0.3-b02</version> 
     <type>jar</type> 
     <scope>compile</scope> 
    </dependency> 

    <!-- Primefaces --> 
    <dependency> 
     <groupId>org.primefaces</groupId> 
     <artifactId>primefaces</artifactId> 
     <version>2.2</version> 
     <type>jar</type> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.primefaces.themes</groupId> 
     <artifactId>redmond</artifactId> 
     <version>1.0.0</version> 
    </dependency> 

    <!-- Internal dependencies --> 
    <dependency> 
     <groupId>com.company.record</groupId> 
     <artifactId>record-dao</artifactId> 
     <version>1.0.0</version> 
     <type>jar</type> 
     <scope>compile</scope> 
    </dependency> 
</dependencies> 

<build> 
    <finalName>record</finalName> 
    <plugins> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>jboss-maven-plugin</artifactId> 
      <version>1.5.0</version> 
      <configuration> 
       <serverName>web</serverName> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

<repositories> 
    <repository> 
     <id>prime-repo</id> 
     <name>Prime Technology Maven Repository</name> 
     <url>http://repository.prime.com.tr</url> 
     <layout>default</layout> 
    </repository> 
</repositories> 

記録のDAOのpom.xml

<project 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" 
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<modelVersion>4.0.0</modelVersion> 
<parent> 
    <artifactId>record</artifactId> 
    <groupId>com.company.record</groupId> 
    <version>1.0.0</version> 
</parent> 

<groupId>com.company.record</groupId> 
<artifactId>record-dao</artifactId> 
<version>1.0.0</version> 
<packaging>jar</packaging> 
<name>record-dao</name> 

<dependencies> 
    <!-- Hibernate --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>3.6.4.Final</version> 
     <exclusions> 
      <exclusion> 
       <artifactId>cglib</artifactId> 
       <groupId>cglib</groupId> 
      </exclusion> 
      <exclusion> 
       <artifactId>antlr</artifactId> 
       <groupId>antlr</groupId> 
      </exclusion> 
      <exclusion> 
       <artifactId>jta</artifactId> 
       <groupId>javax.transaction</groupId> 
      </exclusion> 
      <exclusion> 
       <artifactId>commons-collections</artifactId> 
       <groupId>commons-collections</groupId> 
      </exclusion> 
      <exclusion> 
       <artifactId>hibernate-commons-annotations</artifactId> 
       <groupId>org.hibernate</groupId> 
      </exclusion> 
     </exclusions> 
    </dependency> 

    <!-- Postgresql --> 
    <dependency> 
     <groupId>postgresql</groupId> 
     <artifactId>postgresql</artifactId> 
     <version>8.3-606.jdbc4</version> 
     <type>jar</type> 
     <scope>compile</scope> 
    </dependency> 

    <!-- Internal dependencies --> 
    <dependency> 
     <groupId>com.company.record</groupId> 
     <artifactId>record-commun</artifactId> 
     <version>1.0.0</version> 
     <type>jar</type> 
     <scope>compile</scope> 
    </dependency> 
</dependencies> 

+0

便利なヘルプが必要な場合は、いくつかの設定を表示する必要があります。両方のpomファイルの関連ビットを投稿してください。 –

+0

webappとそのモジュールのpom.xmlファイルを追加しました – Stephan

+0

@Jarod prime-repoにはcom.companyディレクトリがありません。 only com/prime – Stephan

答えて

0

私は最終的に解決策を見つける。 web-app/web-inf/libディレクトリに、依存するjarファイルと同じ名前を共有していたjarファイルがありました。

maven-war-pluginは私のローカルリポジトリに新しくインストールされたものではなく、この古いjarファイルを使用していました。

2

サウンズjarファイルの他のバージョン

webappプロジェクトをビルドする前に、依存するjarのmvn installを実行していますか?

それはちょうどこの時点で、あなたのビルドマシン上でローカルのMavenリポジトリ(ないターゲットディレクトリ)に移動し、削除できることを証明するために

を撮影し、あなたの依存jarファイルがスナップされていないに関係している場合、私は思っていた

+0

依存モジュールの 'mvn install' =>ターゲットフォルダに8Ko、ローカルリポジトリに8Ko。/lib => 5Ko :( – Stephan

+0

と同じバージョン番号ですか?依存関係を変更するwebappにプラグインがありますか? –

+0

依存jarのバージョンはpom.xmlと同じ1.0.0です。プラグインはありません。依存関係を変更する – Stephan

1

現在のyourdepend-1.0.0.jarファイルを実行してmvn installを再度実行すると、問題が解決するはずです(スナップショットの問題の場合)

+0

No luck :(まだトリミングされた瓶を手に入れます – Stephan

1

warをコンパイルする前にmaven cleanパッケージまたはmaven clean installを実行しましたか?パッケージのみを実行した場合は、ローカルリポジトリのjarファイルが使用されます(古くなっている可能性があります)。

warプラグインは、web-inf/libディレクトリのjarファイルを想定し、libにjarファイルを入れず、依存関係を管理し、それに応じてスコープを変更します。

+0

ローカルのリポジトリからjarファイルを手動で削除しましたmvn clean install mvn cleanパッケージweb app、まだトリミングされていないパッケージがあります私のローカルリポジトリの完全なもの:( – Stephan

+0

あなたはABC-SNAPSHOT.jarのようなリポジトリスナップショットを使っているように聞こえますが、settings.xmlをチェックしてくださいあなたのリポジトリでそれをチェックし、サイズを比較してください。 –