网站建设定义,做导航网站把别人的网址链接过来要经过允许吗,vs2017网站开发教程,企业网站建设前期准备1. 新的问题
之前搭建Presto的本地开发环境时#xff0c;一直使用config.properties中的plugin.bundles配置项定义需要加载的plugin模块#xff0c;详细可以参考博客《win10基于IDEA#xff0c;搭建Presto开发环境》presto服务启动时#xff0c;指定加载哪些组件#xff…1. 新的问题
之前搭建Presto的本地开发环境时一直使用config.properties中的plugin.bundles配置项定义需要加载的plugin模块详细可以参考博客《win10基于IDEA搭建Presto开发环境》presto服务启动时指定加载哪些组件有下面两种配置方法 线上服务部署一般使用plugin.dir配置项默认值安装包下的plugin目录。会加载plugin目录下的所有插件比较适合线上服务本地开发一般使用plugin.bundles配置项指定需要加载的plugin以实现服务的快速启动 后来更换笔记本电脑重新搭建本地开发环境时发现使用plugin.bundles竟然无法成功加载plugin具体报错信息如下不是很完整2022-07-15T22:54:50.3330800 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分析错误日志得到以下信息
无法正确加载指定plugin的pom.xml文件Error loading pom ...无法加载pom文件的原因 无法从默认的central仓库加载presto-root的父模块com.facebook.airlift:airbase也就是无法加载祖父模块无法访问central仓库的原因central仓库使用的是其http地址现在已经要求使用https方式了
2. 正确的解决办法 在config.properties中使用maven.repo.local指定本地maven仓库 maven.repo.local/Users/xxx/repo本地仓库已经包含事先mvn clean install好的plugin jar服务启动加载plugin时便可以直接从本地仓库获取jar 2023-03-07T17:21:44.0740800 INFO main com.facebook.airlift.bootstrap.LifeCycleManager Life cycle startup complete. System ready.
2023-03-07T17:21:44.0740800 INFO main com.facebook.presto.server.PluginManager -- Loading plugin ../presto-memory/pom.xml --
2023-03-07T17:21:55.7070800 DEBUG main com.facebook.presto.server.PluginManager Classpath for ../presto-memory/pom.xml:
2023-03-07T17:21:55.7280800 DEBUG main com.facebook.presto.server.PluginManager /Users/xxx/IdeaProjects/facebook-presto-0.223.1/presto-memory/target/classes
2023-03-07T17:21:55.7300800 DEBUG main com.facebook.presto.server.PluginManager /Users/xxx/repo/aopalliance/aopalliance/1.0/aopalliance-1.0.jar
...
2023-03-07T17:21:55.7600800 INFO main com.facebook.presto.server.PluginManager Installing com.facebook.presto.plugin.memory.MemoryPlugin
2023-03-07T17:21:55.7710800 INFO main com.facebook.presto.server.PluginManager Registering connector memory
2023-03-07T17:21:55.7730800 INFO main com.facebook.presto.server.PluginManager -- Finished loading plugin ../presto-memory/pom.xml --3. 不完美的解决办法 为了避免大家走弯路还是记录一下自己最开始的不完美的解决办法 从网上查阅资料发现该仓库确实已经从2020开始改为使用https访问了 全局搜索只定位到maven-model-builder依赖中使用的pom-4.0.0.xml配置的maven仓库地址符合要求 dependencygroupIdorg.apache.maven/groupIdartifactIdmaven-model-builder/artifactIdversion3.0.4/version
/dependency通过依赖分析发现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中否则最新的代码无法生效
4. 后记关于Presto Plugin
Presto使用插件机制符合SPI规范的Connector、Type、Function、System Access Control等可以加入到Presto中插件机制使得组件功能可插拔、可定制化可以满足用户的不同需求不同的插件定义方式有所差别但下面的一些事情是通用的 pom.xml中packaging方式必须为presto-pluginpackagingpresto-plugin/packagingpom.xml中需要引入presto-spi模块。同时必须实现SPI中定义的接口或重写SPI中定义的方法dependencygroupIdcom.facebook.presto/groupIdartifactIdpresto-spi/artifactIdscopeprovided/scope
/dependency配置presto-root的pom.xml添加该插件对应的模块modulepresto-xxx-module/module在presto-server/src/main/assembly/presto.xml文件中配置plugin的输出目录fileSetdirectory${project.build.directory}/dependency/presto-xxx-module-${project.version}/directoryoutputDirectoryplugin/xxx-module/outputDirectory
/fileSet配置presto-server的pom.xml文件增加以下内容以保证安装包对应的plugin目录有它的jar包dependencygroupIdcom.facebook.presto/groupIdartifactIdpresto-xxx-module/artifactIdversion${project.version}/versiontypezip/typescopeprovided/scope
/dependency