config.properties
中的plugin.bundles
配置项定义需要加载的plugin模块,详细可以参考博客《win10基于IDEA,搭建Presto开发环境》plugin.dir
配置项,默认值:安装包下的plugin
目录。会加载plugin目录下的所有插件,比较适合线上服务plugin.bundles
配置项,指定需要加载的plugin以实现服务的快速启动plugin.bundles
,竟然无法成功加载plugin2022-07-15T22:54:50.333+0800 ERROR main com.facebook.presto.server.PrestoServer Error loading pom: D:\IdeaProjects\facebook-presto-0.223.1\presto-main\..\presto-memory\pom.xml
java.lang.RuntimeException: Error loading pom: D:\IdeaProjects\facebook-presto-0.223.1\presto-main\..\presto-memory\pom.xmlat io.airlift.resolver.ArtifactResolver.resolvePom(ArtifactResolver.java:143)...at com.facebook.presto.server.PrestoServer.main(PrestoServer.java:77)
Caused by: org.apache.maven.project.ProjectBuildingException: 1 problem was encountered while building the effective model for com.facebook.presto:presto-memory:0.240
[FATAL] Non-resolvable parent POM for com.facebook.presto:presto-root:0.240: Could not transfer artifact com.facebook.airlift:airbase:pom:99 from/to central (http://repo.maven.apache.org/maven2): Failed to transfer http://repo.maven.apache.org/maven2/com/facebook/airlift/airbase/99/airbase-99.pom. Error code 501, HTTPS Required and 'parent.relativePath' points at wrong local POM @ com.facebook.presto:presto-root:0.240, D:\IdeaProjects\facebook-presto-0.223.1\pom.xml, line 5, column 13for project com.facebook.presto:presto-memory:0.240 at D:\IdeaProjects\facebook-presto-0.223.1\presto-main\..\presto-memory\pom.xmlat org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:149)at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:102)at io.airlift.resolver.ArtifactResolver.resolvePom(ArtifactResolver.java:136)... 6 more
Caused by: org.apache.maven.model.building.ModelBuildingException: 1 problem was encountered while building the effective model for com.facebook.presto:presto-memory:0.240
[FATAL] Non-resolvable parent POM for com.facebook.presto:presto-root:0.240: Could not transfer artifact com.facebook.airlift:airbase:pom:99 from/to central (http://repo.maven.apache.org/maven2): Failed to transfer http://repo.maven.apache.org/maven2/com/facebook/airlift/airbase/99/airbase-99.pom. Error code 501, HTTPS Required and 'parent.relativePath' points at wrong local POM @ com.facebook.presto:presto-root:0.240, D:\IdeaProjects\facebook-presto-0.223.1\pom.xml, line 5, column 13at org.apache.maven.model.building.DefaultModelProblemCollector.newModelBuildingException(DefaultModelProblemCollector.java:195)at org.apache.maven.model.building.DefaultModelBuilder.readParentExternally(DefaultModelBuilder.java:841)at org.apache.maven.model.building.DefaultModelBuilder.readParent(DefaultModelBuilder.java:664)at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:310)at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:232)at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:142)... 8 more
分析错误日志,得到以下信息:
Error loading pom ...
presto-root
的父模块com.facebook.airlift:airbase
,也就是无法加载祖父模块在config.properties中,使用maven.repo.local
指定本地maven仓库,
maven.repo.local=/Users/xxx/repo
本地仓库已经包含事先mvn clean install
好的plugin jar,服务启动加载plugin时,便可以直接从本地仓库获取jar
2023-03-07T17:21:44.074+0800 INFO main com.facebook.airlift.bootstrap.LifeCycleManager Life cycle startup complete. System ready.
2023-03-07T17:21:44.074+0800 INFO main com.facebook.presto.server.PluginManager -- Loading plugin ../presto-memory/pom.xml --
2023-03-07T17:21:55.707+0800 DEBUG main com.facebook.presto.server.PluginManager Classpath for ../presto-memory/pom.xml:
2023-03-07T17:21:55.728+0800 DEBUG main com.facebook.presto.server.PluginManager /Users/xxx/IdeaProjects/facebook-presto-0.223.1/presto-memory/target/classes
2023-03-07T17:21:55.730+0800 DEBUG main com.facebook.presto.server.PluginManager /Users/xxx/repo/aopalliance/aopalliance/1.0/aopalliance-1.0.jar
...
2023-03-07T17:21:55.760+0800 INFO main com.facebook.presto.server.PluginManager Installing com.facebook.presto.plugin.memory.MemoryPlugin
2023-03-07T17:21:55.771+0800 INFO main com.facebook.presto.server.PluginManager Registering connector memory
2023-03-07T17:21:55.773+0800 INFO main com.facebook.presto.server.PluginManager -- Finished loading plugin ../presto-memory/pom.xml --
为了避免大家走弯路,还是记录一下自己最开始的不完美的解决办法
从网上查阅资料,发现该仓库确实已经从2020开始,改为使用https访问了
全局搜索,只定位到maven-model-builder
依赖中使用的pom-4.0.0.xml
,配置的maven仓库地址符合要求
org.apache.maven maven-model-builder 3.0.4
通过依赖分析,发现maven-model-builder
是presto-main
模块因为使用io.airlift.resolver:resolver:1.4
,传递导入的
因此,就认为只要exclued掉presto-main中的maven-model-builder
依赖就行
结果仍然不行,最终只能使用plugin.dir
配置plugin信息
plugin.dir=../presto-server/target/presto-server-0.240/presto-server-0.240/plugin
使用plugin.dir
存在的问题: 开发过程中,模块重新编译后,需要将该模块的jar放到plugin中,否则最新的代码无法生效
packaging
方式必须为presto-pluginpresto-plugin
com.facebook.presto presto-spi provided
presto-xxx-module
presto-server/src/main/assembly/presto.xml文
件中,配置plugin的输出目录${project.build.directory}/dependency/presto-xxx-module-${project.version} plugin/xxx-module
presto-server
的pom.xml文件,增加以下内容,以保证安装包对应的plugin目录有它的jar包com.facebook.presto presto-xxx-module ${project.version} zip provided