我可以直接在 jboss EAP 7.3 容器中包含相关的 jar 文件吗?
can I include dependent jar files directly in a jboss EAP 7.3 container?
我正在将 java ear 应用程序从 weblogic 迁移到 jboss。该应用程序是一个耳朵,在 pom 中具有以下对 antlr 的 maven 依赖性:
<dependency>
<groupId>antlr</groupId>
<artifactId>antlr</artifactId>
<version>2.7.7</version>
<scope>test</scope>
</dependency>
在本地主机上,我们使用 jetty,所以它被包含在 pom 中,我猜是由于正在测试的范围。在我们的 test/production 环境中,我们部署在 Weblogic 上,我正试图将其移动到 jboss。部署到 jboss 时 ear 失败,因为 weblogic 会自动在容器中包含此 antlr jar 而 jboss 不会。因此,对于 jboss 构建,我必须注释掉范围行并将 antlr 直接包含在 ear 文件中。我不想更改代码,但仍然可以在 jboss 和 weblogic 上运行。
是否可以将 antlr 依赖项作为模块或其他一些类路径设置直接包含在 jboss 中?
Antlr 是一个基本模块,因此您可以将它添加到您的依赖项中,jboss 将使您的应用程序可以访问该模块。
一种方法是在你的 jar 文件的清单中添加依赖项,在你的 maven 构建中:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.1</version>
<configuration>
<archive>
<manifestEntries>
<Dependencies>org.antlr</Dependencies>
</manifestEntries>
</archive>
</configuration>
</plugin>
或者,您可以将 jboss-deployment-structure.xml
文件添加到您的应用程序并在那里声明依赖项。
我最终在 jboss_home/module/antlr/main/module.xml 中添加了一个模块,但我认为 jboss-deployment-structure.xml 也可以。 jboss-deployment-structure 很好我想如果我想控制哪个部署获取文件。我想默认将其提供给所有部署,因此改为放入域配置文件是有意义的。
我把这个放在 module.xml 和 antlr jar 在同一个文件夹里。
<module xmlns="urn:jboss:module:1.1" name="antlr">
<resources>
<resource-root path="antlr-2.7.7.jar"/>
</resources>
</module>
然后我在 domain.xml 中添加了这个:
<subsystem xmlns="urn:jboss:domain:ee:4.0">
...
<global-modules>
<module name="antlr" slot="main"/>
</global-modules>
...
</subsystem>
我重新启动了所有主机,现在部署似乎工作正常。谢谢!
我正在将 java ear 应用程序从 weblogic 迁移到 jboss。该应用程序是一个耳朵,在 pom 中具有以下对 antlr 的 maven 依赖性:
<dependency>
<groupId>antlr</groupId>
<artifactId>antlr</artifactId>
<version>2.7.7</version>
<scope>test</scope>
</dependency>
在本地主机上,我们使用 jetty,所以它被包含在 pom 中,我猜是由于正在测试的范围。在我们的 test/production 环境中,我们部署在 Weblogic 上,我正试图将其移动到 jboss。部署到 jboss 时 ear 失败,因为 weblogic 会自动在容器中包含此 antlr jar 而 jboss 不会。因此,对于 jboss 构建,我必须注释掉范围行并将 antlr 直接包含在 ear 文件中。我不想更改代码,但仍然可以在 jboss 和 weblogic 上运行。
是否可以将 antlr 依赖项作为模块或其他一些类路径设置直接包含在 jboss 中?
Antlr 是一个基本模块,因此您可以将它添加到您的依赖项中,jboss 将使您的应用程序可以访问该模块。
一种方法是在你的 jar 文件的清单中添加依赖项,在你的 maven 构建中:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.1</version>
<configuration>
<archive>
<manifestEntries>
<Dependencies>org.antlr</Dependencies>
</manifestEntries>
</archive>
</configuration>
</plugin>
或者,您可以将 jboss-deployment-structure.xml
文件添加到您的应用程序并在那里声明依赖项。
我最终在 jboss_home/module/antlr/main/module.xml 中添加了一个模块,但我认为 jboss-deployment-structure.xml 也可以。 jboss-deployment-structure 很好我想如果我想控制哪个部署获取文件。我想默认将其提供给所有部署,因此改为放入域配置文件是有意义的。
我把这个放在 module.xml 和 antlr jar 在同一个文件夹里。
<module xmlns="urn:jboss:module:1.1" name="antlr">
<resources>
<resource-root path="antlr-2.7.7.jar"/>
</resources>
</module>
然后我在 domain.xml 中添加了这个:
<subsystem xmlns="urn:jboss:domain:ee:4.0">
...
<global-modules>
<module name="antlr" slot="main"/>
</global-modules>
...
</subsystem>
我重新启动了所有主机,现在部署似乎工作正常。谢谢!