Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将一个罐子暴露在耳朵结构中的多次战争中_Java_Maven_War_Wildfly_Ear - Fatal编程技术网

Java 将一个罐子暴露在耳朵结构中的多次战争中

Java 将一个罐子暴露在耳朵结构中的多次战争中,java,maven,war,wildfly,ear,Java,Maven,War,Wildfly,Ear,我有一个带有ear结构的maven项目,我正在wildfly 9.0.0上部署ear 我有一个jar和jpa一起做持久化,我有3场战争使用这个jar,如果我在其中一场战争中在pom上导入这个jar,这是可以的,但是如果我在两次战争中导入这个jar,CDI就不起作用了 我真正想做的是将这个罐子暴露在耳朵里的所有战争中,而无需在每个战争pom中导入您可以: 停止服务器 打开服务器配置文件。(standalone/configuration/standalone.xml) 在配置文件中找到EE子系

我有一个带有ear结构的maven项目,我正在wildfly 9.0.0上部署ear

我有一个jar和jpa一起做持久化,我有3场战争使用这个jar,如果我在其中一场战争中在pom上导入这个jar,这是可以的,但是如果我在两次战争中导入这个jar,CDI就不起作用了

我真正想做的是将这个罐子暴露在耳朵里的所有战争中,而无需在每个战争pom中导入

您可以:

  • 停止服务器

  • 打开服务器配置文件。(standalone/configuration/standalone.xml)

  • 在配置文件中找到EE子系统配置元素。配置文件的profile元素包含几个子系统元素。EE子系统元素的命名空间为urn:jboss:domain:EE:1.2

  • 如有必要,更换自动关闭标签

  • 添加ear子元素

  • 启动服务器

  • 请注意,这将禁用所有部署的子部署模块隔离,而不仅仅是此部署。

    如果您只想进行此特定部署,则应:

  • 添加部署描述符文件

  • 添加ear子元素

  • 这对于JBOSS EAP是有效的,它的行为与JBOSS wildfly非常相似


    编辑:正如@Will T在jar的wars依赖项中的注释中正确指出的,应添加范围

    我已经将此配置,我的问题是如何配置poms,以便在不导入wars poms的情况下为所有wars提供jar您确定必须在每个子部署的poms中显式声明依赖项吗?我认为将ear子部署隔离设置为false会使war隐式地依赖于您想要的jar。从文档中可以看出:如果将ear子部署隔离设置为false,那么web.war中的类可以访问属于ejb1.jar和ejb2.jar的类。类似地,ejb1.jar中的类可以访问ejb2.jar中的类(反之亦然)。用户必须使用类路径条目或通过设置显式模块依赖项手动设置依赖项。()您希望确保每个war的pom都列出了jar,因为这将提供用于编译的类,但不会包含在war中。然后,您可以确保您的ear包含jar元素,并隔离元素ear子部署,以解决我的问题。谢谢