![](/img/trans.png)
[英]Configure Wildfly Naming subsytem on deploy with Maven plugin wildfly-maven-plugin
[英]Error during the deploy with wildfly-maven-plugin
我有一个具有以下结构的Maven多模块项目:
- cotacao
-- cotacao-core
-- cotacao-service
cotacao
项目是根,而cotacao-{core,service}
是模块。 cotacao-service
是一个以cotacao-core
作为依赖项的EJB模块。 我正在使用wildfly-maven-plugin
部署EJB cotacao-service
。
我的pom.xml
片段是:
(1) cotacao
项目:
<groupId>com.tnas</groupId>
<artifactId>cotacao</artifactId>
<version>1.0</version>
<name>Cotacao Parent Project</name>
<packaging>pom</packaging>
<modules>
<module>cotacao-service</module>
<module>cotacao-core</module>
</modules>
(2) cotacao-core
项目:
<parent>
<groupId>com.tnas</groupId>
<artifactId>cotacao</artifactId>
<version>1.0</version>
</parent>
<groupId>com.fincatto</groupId>
<artifactId>cotacao-core</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Cotacao Core</name>
(3) cotacao-service
项目:
<parent>
<groupId>com.tnas</groupId>
<artifactId>cotacao</artifactId>
<version>1.0</version>
</parent>
<artifactId>cotacao-service</artifactId>
<version>1.0.0</version>
<packaging>ejb</packaging>
...
<dependencies>
...
<dependency>
<groupId>com.fincatto</groupId>
<artifactId>cotacao</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.wildfly.plugins</groupId>
<artifactId>wildfly-maven-plugin</artifactId>
<version>${wildfly.plugin.version}</version>
<executions>
<execution>
<id>deploy-cotacao-core-dependency</id>
<phase>package</phase>
<goals>
<goal>deploy-artifact</goal>
</goals>
</execution>
</executions>
<configuration>
<project>
<dependencies>
<dependency>
<groupId>com.fincatto</groupId>
<artifactId>cotacao-core</artifactId>
</dependency>
</dependencies>
</project>
</configuration>
</plugin>
...
</plugins>
</build>
我正在运行followin Maven目标wildfly:deploy
,但出现错误:
15:34:03,183 ERROR [org.jboss.as.server] (management-handler-thread - 36) WFLYSRV0021: Deploy of deployment "cotacao-service-1.0.0.jar" was rolled back with the following failure message:
{
"WFLYCTL0080: Failed services" => {"jboss.deployment.unit.\"cotacao-service-1.0.0.jar\".POST_MODULE" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"cotacao-service-1.0.0.jar\".POST_MODULE: WFLYSRV0153: Failed to process phase POST_MODULE of deployment \"cotacao-service-1.0.0.jar\"
Caused by: java.lang.RuntimeException: WFLYSRV0177: Error getting reflective information for class com.tnas.cotacao.service.BACENService with ClassLoader ModuleClassLoader for Module \"deployment.cotacao-service-1.0.0.jar:main\" from Service Module Loader
Caused by: java.lang.NoClassDefFoundError: Lcom/fincatto/cotacao/ws/WSConsulta;
Caused by: java.lang.ClassNotFoundException: com.fincatto.cotacao.ws.WSConsulta from [Module \"deployment.cotacao-service-1.0.0.jar:main\" from Service Module Loader]"},
"WFLYCTL0412: Required services that are not installed:" => ["jboss.deployment.unit.\"cotacao-service-1.0.0.jar\".POST_MODULE"],
"WFLYCTL0180: Services with missing/unavailable dependencies" => undefined
}
因此,我不知道我的Maven配置有什么问题。 我如何使用wildfly-maven-plugin
来部署具有各自依赖性的EJB? 就我而言, cotacao-core
是必需的依赖项之一。
谢谢!
在执行wildfly:deploy之前,您必须先安装“ cotacao-core”
尝试更改执行以安装:
<dependencies>
...
<dependency>
<groupId>com.fincatto</groupId>
<artifactId>cotacao-core</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
<plugins>
<plugin>
<groupId>org.wildfly.plugins</groupId>
<artifactId>wildfly-maven-plugin</artifactId>
<version>${wildfly.plugin.version}</version>
<executions>
<execution>
<id>deploy-cotacao-core-dependency</id>
<phase>install</phase>
<goals>
<goal>deploy-artifact</goal>
</goals>
</execution>
</executions>
<configuration>
<groupId>com.fincatto</groupId>
<artifactId>cotacao-service</artifactId>
</dependency>
</configuration>
</plugin>
...
</plugins>
并简单地启动:mvn install
我还没有找到一种优雅的方式来做自己想要的事情。 因此,我已经使用maven-shade-plugin
解决了这个问题。 插件配置如下。 有两种执行方式:一种用于EJB本身,另一种用于EJB客户端。
<!-- Usage: mvn:package -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>${shade.plugin.version}</version>
<executions>
<execution>
<id>shade-ejb-service</id>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<outputFile>${ejb.fileName}.jar</outputFile>
<artifactSet>
<includes>
<!-- Here I've included every dependencies -->
<include>groupId:artifactId</include>
</includes>
</artifactSet>
</configuration>
</execution>
<execution>
<id>shade-ejb-client</id>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<outputFile>${ejb.fileName}-client.jar</outputFile>
<artifactSet>
<includes>
<!-- Only dependencies for the client -->
<include>groupId:artifactId</include>
</includes>
</artifactSet>
<!-- Filters for selecting specific client classes -->
<filters>
<filter>
<artifact>com.fincatto:cotacao-core</artifact>
<includes>
<include>com/fincatto/cotacao/classes/*</include>
</includes>
</filter>
<filter>
<artifact>com.tnas:cotacao-service</artifact>
<includes>
<include>com/tnas/cotacao/service/remote/*</include>
</includes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.