美好的一天,
我使用maven构建了一个项目。在整个项目中,我得出结论,必须为特定模块添加一个依赖项。我在它的pom文件中添加了这个依赖项,当我尝试使用maven重建项目时,抛出了一个空指针。
之前的Pom文件:
(小孩pom :)
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
</dependency>
</dependencies>
(主要的pom :)
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
<version>1.0.1.Final</version>
</dependency>
<dependency>
<groupId>com.solveit.crm.core</groupId>
<artifactId>crm-core</artifactId>
<version>${project.version}</version>
</dependency> //this dependency is for another module, it was
declared at the start of the project
</dependencies>
</dependencyManagement>
现在的Pom文件(导致nullpointer):
(孩子pom :)
<dependencies>
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
</dependency>
<dependency>
<groupId>com.solveit.crm.data</groupId>
<artifactId>crm-data</artifactId>
</dependency>
</dependencies>
(主要的pom :)
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
<version>1.0.1.Final</version>
</dependency>
<dependency>
<groupId>com.solveit.crm.core</groupId>
<artifactId>crm-core</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.solveit.crm.data</groupId>
<artifactId>crm-data</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
为什么maven会抛出空指针异常?我现在很困惑。
错误消息:
[INFO] Scanning for projects...
[ERROR] Internal error: java.lang.NullPointerException -> [Help 1]
org.apache.maven.InternalErrorException: Internal error: java.lang.NullPointerEx
ception
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:167)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:213)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:157)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Laun
cher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.jav
a:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(La
uncher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:
356)
Caused by: java.lang.NullPointerException
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:270)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)
... 11 more
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e swit
ch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please rea
d the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/InternalErrorE
xception
在日食中我得到:
[INFO] Scanning for projects...
[ERROR] The projects in the reactor contain a cyclic reference: Edge between 'Vertex{label='com.solveit.crm.data:crm-data:1'}' and 'Vertex{label='com.solveit.crm.core:crm-core:1'}' introduces to cycle in the graph com.solveit.crm.core:crm-core:1 --> com.solveit.crm.data:crm-data:1 --> com.solveit.crm.core:crm-core:1 -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectCycleException
谢谢
答案 0 :(得分:13)
您有依赖项的循环引用。
看起来你的crm-core项目的依赖项中有crm-data,而crm-data项目的依赖项中有crm-core。
Maven无法编译这样的案例。