Java 带有ejb模块的Maven ear项目。生成application.xml时出错
在编译以下pom时,我得到一个异常,指出项目中缺少Java 带有ejb模块的Maven ear项目。生成application.xml时出错,java,maven,configuration,Java,Maven,Configuration,在编译以下pom时,我得到一个异常,指出项目中缺少核心依赖项: [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 projec
核心
依赖项:
[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]
EAR的设置如下所示:
<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>
...
西厄
耳朵
com.myapp
网状物
${application.web.version}
战争
运行时
com.myapp
核心
...
西厄
org.apache.maven.plugins
maven耳朵插件
2.8
com.myapp
网状物
/网
网络战争
com.myapp
核心
core.jar
解放党/
真的
...
核心项目如下:
<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>
4.0.0
核心
1.0.0.Pre-Alpha
ejb
...
org.apache.maven.plugins
maven ejb插件
2.3
3.1
正如您所见,ear清楚地将核心模块列为依赖项
注意:缺少该版本,因为此pom使用相应的DependencyManager标记将聚合pom声明为其父级
你知道这可能是什么原因吗?我看到了这个网站,问题是我在列出核心依赖项时没有包含ejb
元素
完全依赖项应如下所示:
<dependency>
<groupId>com.myapp</groupId>
<artifactId>core</artifactId>
<version>1.0.0.Pre-Alpha</version>
<type>ejb</type>
</dependency>
com.myapp
核心
1.0.0.Pre-Alpha
ejb
我不知道为什么,但是maven抱怨当您将类型指定为ejb时没有版本。maven在将ejb模块作为依赖项添加到EAR应用程序时无法构建Application.xml。原因是依赖项必须是ejb类型。当手动将EJB模块添加到EAR应用程序依赖项时会发生这种情况。如果手动向EAR添加WAR模块,也会发生这种情况。war应该在POM中为每个依赖项指定。而且您之前没有添加
。注意:依赖项中必须始终至少提供3个参数:groupId
、artifactId
和version
,除非当前pom从父pom继承了版本。谢谢!这让我快发疯了。