如何配置Maven生成仅包含接口用到的依赖类的EJB客户端Jar?
关于WebLogic Maven appc插件生成精简EJB客户端Jar的配置说明
WebLogic提供的maven appc插件(集成在weblogic-maven-plugin中)完全支持你要的「仅打包EJB接口引用到的依赖类」需求,不需要结合maven-assembly-plugin使用,对应配置如下:
- 核心控制参数为
clientJarExcludeNonReferencedClasses,将该参数设为true后,appc生成客户端Jar时会自动过滤所有未被EJB公共接口(远程接口、业务接口等)直接/间接引用的类,不会引入全量依赖库 - 可搭配
clientJarIncludes、clientJarExcludes参数做自定义的类路径过滤,进一步控制客户端Jar的内容 - 生成的客户端Jar会自动包含EJB接口定义、接口方法用到的参数/返回值/异常类、以及上述类的传递依赖类,没有被引用的第三方依赖类不会被打包
参考配置示例:
<plugin> <groupId>com.oracle.weblogic</groupId> <artifactId>weblogic-maven-plugin</artifactId> <version>12.1.3-0-0</version> <executions> <execution> <id>appc-build</id> <phase>process-classes</phase> <goals> <goal>appc</goal> </goals> <configuration> <earSourceDirectory>${project.build.directory}/${project.build.finalName}</earSourceDirectory> <!-- 开启EJB客户端生成 --> <generateClient>true</generateClient> <!-- 仅打包被接口引用的类,过滤未引用内容 --> <clientJarExcludeNonReferencedClasses>true</clientJarExcludeNonReferencedClasses> <!-- 可选:自定义要包含的类路径规则 --> <clientJarIncludes> <include>com/yourcompany/ejb/api/**/*.class</include> </clientJarIncludes> <!-- 可选:自定义要排除的类路径规则 --> <clientJarExcludes> <exclude>com/yourcompany/ejb/impl/**/*.class</exclude> </clientJarExcludes> </configuration> </execution> </executions> </plugin>
如果你的EJB接口引用了第三方Jar中的类,appc会自动提取对应类写入客户端Jar,不会将整个第三方Jar打包进去,完全匹配你需要的精简客户端Jar的需求。
内容的提问来源于stack exchange,提问作者saichand singamaneni
相关产品推荐
相关产品推荐

