编译下面的pom时,我得到一个异常,说明项目中缺少core
依赖项:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-ear-plugin:2.8:generate-application-xml (default-generate-application-xml) on project theear: Artifact[ejb:com.myapp:core] is not a dependency of the project. -> [Help 1]
theear设置如下:
<project ...>
...
<artifactId>theear</artifactId>
<packaging>ear</packaging>
<dependencies>
<dependency>
<groupId>com.myapp</groupId>
<artifactId>web</artifactId>
<version>${application.web.version}</version>
<type>war</type>
<scope>runtime</scope>
</dependency>
<!-- myapp projects -->
<dependency>
<groupId>com.myapp</groupId>
<artifactId>core</artifactId>
</dependency>
...
</dependencies>
<build>
<finalName>theear</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>2.8</version>
<configuration>
<modules>
<webModule>
<groupId>com.myapp</groupId>
<artifactId>web</artifactId>
<contextRoot>/web</contextRoot>
<bundleFileName>web.war</bundleFileName>
</webModule>
<ejbModule>
<groupId>com.myapp</groupId>
<artifactId>core</artifactId>
<bundleFileName>core.jar</bundleFileName>
</ejbModule>
</modules>
<defaultLibBundleDir>lib/</defaultLibBundleDir>
<skinnyWars>true</skinnyWars>
</configuration>
</plugin>
...
</plugins>
</build>
</project>
核心项目是这样的:
<project ...>
<modelVersion>4.0.0</modelVersion>
<artifactId>core</artifactId>
<version>1.0.0.Pre-Alpha</version>
<packaging>ejb</packaging>
<dependencies>
...
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ejb-plugin</artifactId>
<version>2.3</version>
<configuration>
<ejbVersion>3.1</ejbVersion>
</configuration>
</plugin>
</plugins>
</build>
</project>
正如您所见,耳朵清楚地将核心模块列为依赖
注意:版本丢失了,因为这个pom声明了一个聚合pom,因为它是具有相应dependencyManagement标记的父pom。
知道这可能是什么原因吗?
答案 0 :(得分:18)
我遇到了this网站,问题是在列出核心依赖项时我没有包含<type>ejb</type>
元素。
完全依赖应该如下所示:
<dependency>
<groupId>com.myapp</groupId>
<artifactId>core</artifactId>
<version>1.0.0.Pre-Alpha</version>
<type>ejb</type>
</dependency>
我不知道为什么,但当你指定类型为ejb时,maven抱怨没有版本。
答案 1 :(得分:4)
在将EJB模块作为依赖项添加到EAR应用程序时,Maven无法构建Application.xml。原因是依赖关系必须是ejb类型。将EJB模块手动添加到EAR应用程序依赖项时会发生这种情况。如果手动将WAR模块添加到EAR,也会发生这种情况。应在POM中为每个依赖项指定war。