如何配置open liberty-maven-plugin实现parentLast类加载并集成IntelliJ?
解决Open Liberty与IntelliJ集成时的parentLast类加载及重复部署问题
针对你遇到的问题,提供两种可行的解决方案,既可以保留parentLast类加载配置,又能避免应用重复部署:
方案一:通过Liberty Maven Plugin配置应用部署
移除server.xml中的blog应用配置
删除server.xml中<application id="app-blog"...>的整个代码块,避免server.xml和插件各自部署一次应用。修改pom.xml中的插件配置
在liberty-maven-plugin的configuration中添加<apps>节点,直接定义blog应用的类加载器规则:<plugin> <groupId>io.openliberty.tools</groupId> <artifactId>liberty-maven-plugin</artifactId> <version>3.6</version> <configuration> <installDirectory>C:\wlp-webProfile8-21.0.0.12\wlp</installDirectory> <jvmOptionsFile>C:\wlp-webProfile8-21.0.0.12\wlp\usr\servers\defaultServer\jvm.arguments.txt</jvmOptionsFile> <apps> <app> <location>${project.build.directory}/app-blog.ear</location> <name>wem-app-blog</name> <type>ear</type> <classloader> <commonLibraryRef>global</commonLibraryRef> <delegation>parentLast</delegation> </classloader> </app> </apps> </configuration> </plugin>通过IntelliJ启动服务器
使用Maven运行配置执行liberty:run目标,插件会自动部署blog应用并应用parentLast类加载规则,不会出现重复部署问题。
方案二:直接使用IntelliJ的Open Liberty集成
在IntelliJ中配置Open Liberty服务器
- 打开
Run > Edit Configurations,添加新的Open Liberty配置。 - 指定服务器安装目录为
C:\wlp-webProfile8-21.0.0.12\wlp,服务器名称为defaultServer。
- 打开
将blog应用添加到服务器
在服务器配置的Deployment标签页中,点击+选择你的blog应用模块。配置应用的类加载规则
- 选中已添加的应用,点击
Edit。 - 切换到
Class Loader部分,将Delegation设置为Parent Last。 - 添加对server.xml中定义的
global库的引用(确保server.xml中的<library id="global">配置保留)。
- 选中已添加的应用,点击
从IntelliJ启动服务器
使用配置好的服务器运行按钮启动,IntelliJ会直接部署应用并应用类加载规则,无需依赖Maven插件的部署流程,避免重复部署。
注意事项
- 两种方案都依赖server.xml中已有的
global库配置,请确保该配置保留。 - 使用方案一时,需先执行
mvn package构建生成EAR文件,再启动服务器。 - 避免同时使用两种部署方式,防止再次出现重复部署问题。
内容的提问来源于stack exchange,提问作者Remo Furlanetto
相关产品推荐
相关产品推荐

