【发布时间】:2017-05-15 06:43:19
【问题描述】:
有很多关于这个错误的头条新闻。但我找不到适合我的解决方案。
我将创建一个多模块项目。 parentProject、projectA、projectD、projectUtil 和 projectW。 projectW的包装是war,包含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 现在无法安装。有人可以建议我解决以下例外情况吗?
Test.java
ClassA a = new ClassA();
a.getD().mrbDunya();
ClassD d = new ClassD();
d.getB().sayHello();
编辑
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>
【问题讨论】:
-
添加 pom 文件
-
@Jens pom 的 projectW 文件还是全部?
-
你需要移除循环依赖。如果这不能通过移动类来完成,那么定义接口并依赖它们而不是实现类可能会有所帮助。
-
@EmreArslan 所有人