2017-05-15 78 views
-2

このエラーには多くの見出しがあります。しかし私は私のための解決策を見つけることができません。プロジェクトのビルドパスでサイクルが検出されました

マルチモジュールプロジェクトを作成します。 parentProject,projectA,projectD,projectUtilおよびprojectWprojectWのパッケージは戦争であり、projectA,projectDおよびprojectUtiljarファイルを含んでいます。

projectParent 
├───projectA 
│ ├───src 
│ │ └───main/java/projectA 
│ │  ├───ClassA.java 
│ │  └───ClassB.java 
│ └───pom.xml ---- packaging = jar & dependencies = projectD and projectUtil 
├───projectD 
│ ├───src 
│ │ └───main/java/projectD 
│ │  ├───ClassC.java 
│ │  └───ClassD.java 
│ └───pom.xml ---- packaging = jar & dependencies = projectA and projectUtil 
├───projectUtil 
│ ├───src 
│ │ └───main/java/projectUtil 
│ │  └───StringUtil.java 
│ └───pom.xml ---- packaging = jar & dependencies = no dependency 
├───projectW 
│ ├───src 
│ │ └───main/java/projectW 
│ │  └───Test.java 
│ └───pom.xml ---- packaging = war & dependencies = projectA, projectD and projectUtil 
└───pom.xml ---- packaging = pom & modules = projectA, project D, projectUtil and projectW 

サイクルは、プロジェクトのビルド・パスで検出されたのようなエラーが発生しました。そして私はインターネット上の解決策のような警告へのエラーに目を向ける。

Windowsは - >設定 - > Javaベース>コンパイラ - >ビル - >円形 依存

Test.javaが正常に働いていたが、今原因この警告には設置しないでMavenのです。誰も私に次の例外を持つソリューションを提案することができますか?

enter image description here

Test.java

ClassA a = new ClassA(); 
a.getD().mrbDunya(); 

ClassD d = new ClassD(); 
d.getB().sayHello(); 

EDIT

parentProject /の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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.earslan</groupId> 
    <artifactId>projectParent</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>pom</packaging> 

    <name>Project Parent</name> 

    <modules> 
     <module>projectA</module> 
     <module>projectD</module> 
     <module>projectUtil</module> 
     <module>projectW</module> 
    </modules> 

</project> 

PROJECTA /のpom.xml

<?xml version="1.0"?> 
<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> 
     <groupId>com.earslan</groupId> 
     <artifactId>projectParent</artifactId> 
     <version>1.0-SNAPSHOT</version> 
    </parent> 

    <artifactId>projectA</artifactId> 
    <packaging>jar</packaging> 

    <name>Project A</name> 

    <dependencies> 
     <dependency> 
      <groupId>com.earslan</groupId> 
      <artifactId>projectD</artifactId> 
      <version>1.0-SNAPSHOT</version> 
     </dependency> 
     <dependency> 
      <groupId>com.earslan</groupId> 
      <artifactId>projectUtil</artifactId> 
      <version>1.0-SNAPSHOT</version> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.3</version> 
       <configuration> 
        <source>1.7</source> 
        <target>1.7</target> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

projectUtil /のpom.xml

<?xml version="1.0"?> 
<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> 
     <groupId>com.earslan</groupId> 
     <artifactId>projectParent</artifactId> 
     <version>1.0-SNAPSHOT</version> 
    </parent> 

    <artifactId>projectUtil</artifactId> 
    <packaging>jar</packaging> 

    <name>Project Util</name> 

    <dependencies> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.3</version> 
       <configuration> 
        <source>1.7</source> 
        <target>1.7</target> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

projectW /のpom.xml

<?xml version="1.0"?> 
<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> 
     <groupId>com.earslan</groupId> 
     <artifactId>projectParent</artifactId> 
     <version>1.0-SNAPSHOT</version> 
    </parent> 

    <artifactId>projectW</artifactId> 
    <packaging>war</packaging> 

    <name>Project W</name> 

    <dependencies> 
     <!-- Project Files Dependency --> 
     <dependency> 
      <groupId>com.earslan</groupId> 
      <artifactId>projectA</artifactId> 
      <version>1.0-SNAPSHOT</version> 
     </dependency> 
     <dependency> 
      <groupId>com.earslan</groupId> 
      <artifactId>projectD</artifactId> 
      <version>1.0-SNAPSHOT</version> 
     </dependency> 
     <dependency> 
      <groupId>com.earslan</groupId> 
      <artifactId>projectUtil</artifactId> 
      <version>1.0-SNAPSHOT</version> 
     </dependency> 

     <!-- JSF Dependency --> 
     <dependency> 
      <groupId>com.sun.faces</groupId> 
      <artifactId>jsf-api</artifactId> 
      <version>2.2.2</version> 
     </dependency> 
     <dependency> 
      <groupId>com.sun.faces</groupId> 
      <artifactId>jsf-impl</artifactId> 
      <version>2.2.2</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>javax.servlet-api</artifactId> 
      <version>3.0.1</version> 
     </dependency> 

     <!-- PrimeFaces Dependency --> 
     <dependency> 
      <groupId>org.primefaces</groupId> 
      <artifactId>primefaces</artifactId> 
      <version>6.1</version> 
     </dependency> 
     <dependency> 
      <groupId>org.primefaces.themes</groupId> 
      <artifactId>bootstrap</artifactId> 
      <version>1.0.10</version> 
     </dependency> 

     <dependency> 
      <groupId>commons-fileupload</groupId> 
      <artifactId>commons-fileupload</artifactId> 
      <version>1.3</version> 
     </dependency> 
    </dependencies> 

    <repositories> 
     <repository> 
      <id>prime-repo</id> 
      <name>PrimeFaces Maven Repository</name> 
      <url>http://repository.primefaces.org</url> 
      <layout>default</layout> 
     </repository> 
    </repositories> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.3</version> 
       <configuration> 
        <source>1.7</source> 
        <target>1.7</target> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

</project> 
+0

pomファイルを追加します – Jens

+0

@JensのprojectWのPOMファイルまたはそのすべて? –

+0

あなたは何らかの形で循環依存を削除する必要があります。これをクラスを動かすことで行うことができない場合は、インタフェースを定義し、実装クラスではなくインタフェースに依存するのに役立ちます。 – Henry

答えて

1

├──projectA
│├───src
││└─ ──/ main/java/projectA
│├──ClassA.java
││└───ClassB.java
│└───pom.xml----包装=ジャー&依存性= projectDとprojectUtil
├───projectD
│├───src
││└───main/ javaの/ projectD
││├───ClassC.java
││└───ClassD.java
└───pom.xml----梱包=瓶│ &依存関係= projectAおよびprojectUtil

プロジェクトAは、プロジェクトAに依存するプロジェクトDに依存しています。プロジェクトDは、明確に円形です。

あなたはプロジェクト間でクラスを移動するのいずれか

  1. でリファクタリングする必要があります。
  2. 2つを一緒にマージします。
  3. は、互いに依存するクラスだけを含む3番目のプロジェクト(AとDの両方が依存する)を導入します。
関連する問題