2012-12-15 7 views
6

私はEclipseのMaven 3プロジェクトを持っています。アプリプロジェクトは、他のすべてのアプリの親プロジェクトとして機能します。私はappプロジェクト(最初のpom)からのpom.xmlと、app-webプロジェクトからのpom.xmlを含んでいます。 (第2 POM)Maven 3の依存関係は親POMから子どもには利用できません

アプリ
アプリ耳
アプリ-ejg
アプリ、ウェブ

私がいる問題は、私は効果的なのポンポンで親から依存関係を見ることができるということですapp-web/pom.xmlには含まれていますが、app-webプロジェクトのjavaクラスはこれらの依存関係からインポートできません。私は "import com.fasterxmlは解決できません"を取得します。私はapp-ejbプロジェクトでもこの問題を抱えています。私はこれがちょうど「食い違いエラー」だとは思わない。私がアプリケーションプロジェクトからmvn clean installをしようとすると、同じことについて不平を言ってコンパイルエラーが出ます。

私が作った唯一の変更は、依存関係を子のpom.xmlから親に移動することです。できるだけ集中的にプロジェクトを構成し、できるだけDRYにしたいと思っていました。依存関係を上に移動する前に、うまくいきました。私は、J2EE、m2e-wtp、およびWTPパッチがインストールされたJava EE開発者向けにEclipse Junoを使用しています。

アプリ/のpom.xml

<?xml version="1.0" encoding="UTF-8"?> 
<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> 
<groupId>com.boardgamebuilder</groupId> 
<artifactId>app</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<packaging>pom</packaging> 
<name>app application</name> 

<modules> 
    <module>app-ejb</module> 
    <module>app-web</module> 
    <module>app-ear</module> 
</modules> 

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <java-version>1.6</java-version> 
    <org.slf4j-version>1.7.2</org.slf4j-version> 
    <com.fasterxml.jackson-version>2.1.1</com.fasterxml.jackson-version> 
</properties> 

<dependencyManagement> 
    <dependencies> 

     <!-- JSON handler --> 
     <dependency> 
      <groupId>com.fasterxml.jackson.core</groupId> 
      <artifactId>jackson-annotations</artifactId> 
      <version>${com.fasterxml.jackson-version}</version> 
     </dependency> 
     <dependency> 
      <groupId>com.fasterxml.jackson.core</groupId> 
      <artifactId>jackson-core</artifactId> 
      <version>${com.fasterxml.jackson-version}</version> 
     </dependency> 
     <dependency> 
      <groupId>com.fasterxml.jackson.core</groupId> 
      <artifactId>jackson-databind</artifactId> 
      <version>${com.fasterxml.jackson-version}</version> 
     </dependency> 

     <!-- RESTful servlet --> 
     <dependency> 
      <groupId>com.sun.jersey</groupId> 
      <artifactId>jersey-server</artifactId> 
      <version>1.16</version> 
     </dependency> 

     <!-- Logging --> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>${org.slf4j-version}</version> 
     </dependency> 
     <dependency> 
      <groupId>ch.qos.logback</groupId> 
      <artifactId>logback-classic</artifactId> 
      <version>1.0.7</version> 
     </dependency> 

     <!-- Test --> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.10</version> 
      <scope>test</scope> 
     </dependency> 

     <!-- Misc --> 
     <dependency> 
      <groupId>javax</groupId> 
      <artifactId>javaee-web-api</artifactId> 
      <version>6.0</version> 
      <scope>provided</scope> 
     </dependency> 

     <!-- Define the version of the EJB jar so that we don't need to repeat 
      ourselves in every module --> 
     <dependency> 
      <groupId>com.boardgamebuilder</groupId> 
      <artifactId>app-ejb</artifactId> 
      <version>0.0.1-SNAPSHOT</version> 
      <type>ejb</type> 
     </dependency> 

     <!-- Define the version of the WAR so that we don't need to repeat ourselves 
      in every module --> 
     <dependency> 
      <groupId>com.boardgamebuilder</groupId> 
      <artifactId>app-web</artifactId> 
      <version>0.0.1-SNAPSHOT</version> 
      <type>war</type> 
      <scope>compile</scope> 
     </dependency> 

    </dependencies> 
</dependencyManagement> 

<build> 
    <pluginManagement> 
     <plugins> 
      <!-- Compiler plugin enforces Java 1.6 compatibility and activates annotation 
       processors --> 
      <plugin> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>2.3.2</version> 
       <configuration> 
        <source>1.6</source> 
        <target>1.6</target> 
       </configuration> 
      </plugin> 
     </plugins> 
    </pluginManagement> 
</build> 

アプリ-ウェブ/のpom.xml

http://maven.apache.org/maven-v4_0_0.xsd "> 4.0.0

<parent> 
    <artifactId>app</artifactId> 
    <groupId>com.boardgamebuilder</groupId> 
    <version>0.0.1-SNAPSHOT</version> 
</parent> 

<artifactId>app-web</artifactId> 
<packaging>war</packaging> 

<name>app Web module</name> 
<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>2.1.1</version> 
     </plugin> 
    </plugins> 
</build> 

答えて

22

jackson-annotationsjackson-coreの依存関係を親POMに移動した後で、とartifactId(最小限)を指定してapp-webモジュールで参照する必要があります。 Maven documentationはこの使用方法を説明しています。

+0

パーフェクトをチェックし、あなたに感謝します。私はそれがそのように働いていることを認識していませんでした:C – Jazzepi

+1

私の混乱の多くは、私が子供の有効なポンでの依存関係を見ることができたという事実に起因しています。あなたは合理的なことを説明できますか? – Jazzepi

+1

@Jazzepiはい、私はそれが本当に混乱していることに同意します。私はあまりにも一度にそれによって踏み出されたと思う。理論的根拠?知りません。 –

0

あなたの戦争アプリのポンポンが<packagingExcludes>WEB-INF/lib/*.jar</packagingExcludes>を持っている場合は、それを除外して

関連する問題