我有一个基于 Thorntail 的项目 A,它使用 Thorntail bom-all 和许多 Thorntail 依赖项:
pom.xml
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.thorntail</groupId>
<artifactId>bom-all</artifactId>
<version>${version.thorntail}</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>io.thorntail</groupId>
<artifactId>jaxrs</artifactId>
</dependency>
<dependency>
<groupId>io.thorntail</groupId>
<artifactId>cdi</artifactId>
</dependency>
...
那里的一切都在项目 A 中运行良好。
我想在项目 B 中使用项目 A 的一些类。为此,我在项目 A 中配置了 maven-war-plugin,如下所示,另外还创建了一个 classes-jar:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>${version.maven-war-plugin}</version>
<configuration>
<attachClasses>true</attachClasses>
</configuration>
</plugin>
我的项目 B 的设置与项目 A 非常相似,使用相同的 Thorntail 版本以及 Thorntail bom-all 和许多 Thorntail 依赖项。为了使用项目 A 中的类,我将其添加到项目 B 的 pom.xml 中:
<dependency>
<groupId>my.group</groupId>
<artifactId>project.a</artifactId>
<version>1.0.0-SNAPSHOT</version>
<classifier>classes</classifier>
</dependency>
但是,当我想运行项目 B 的 Thorntail uberjar 时,我得到了典型的 WELD-001408 异常,问题始终是某种 Thorntail 依赖项:
Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type Archive with qualifiers @Default
at injection point [BackedAnnotatedParameter] Parameter 1 of [BackedAnnotatedConstructor] @Inject public org.wildfly.swarm.jaxrs.runtime.DefaultApplicationDeploymentProcessor(Archive)
at org.wildfly.swarm.jaxrs.runtime.DefaultApplicationDeploymentProcessor.<init>(DefaultApplicationDeploymentProcessor.java:0)
在项目 B 的 pom.xml 中,我尝试使用排除元素从项目 A 依赖项中排除 Thorntail 依赖项(单独使用 * 作为 artifactId),但在 Thorntail 启动时我仍然遇到相同的错误。
有人知道如何处理这个问题吗?任何帮助表示赞赏 - 谢谢!