一、从githup 下载源码包
下载完成后,在本地解压,然后构建building
1. Presto 是一个标准的 Maven 项目。只需从项目根目录运行以下命令:
./mvnw clean install
2. 在第一次构建时,Maven 将从 Internet 下载所有依赖项并将它们缓存在本地存储库 ( ~/.m2/repository,注意此路径) 中,这可能需要相当长的时间。后续构建会更快。
3. Presto 有一套全面的单元测试,可能需要几分钟才能运行。您可以在构建时禁用测试:
./mvnw clean install -DskipTests
4. 构建时,会报
Failed to execute goal pl.project13.maven:git-commit-id-plugin:4.0.5:revision (default) on project trino-testing-services: .git directory is not found! Please specify a valid [dotGitDirectory] in your pom.xml
解决方式:
#编辑项目root 的 pom.xml文件 新增一下内容
<plugin>
<groupId>pl.project13.maven</groupId>
<artifactId>git-commit-id-plugin</artifactId>
<configuration>
<failOnNoGitDirectory>false</failOnNoGitDirectory>
<runOnlyOnce>true</runOnlyOnce>
<injectAllReactorProjects>true</injectAllReactorProjects>
<offline>true</offline>
</configuration>
</plugin>
二、执行构建命令
1. ./mvnw 命令启动时,会自动下载 maven-wrapper.properties 中指定的maven , 安装路径是/Users/admin/.m2/wrapper/dists/apache-maven-3.6.3-bin/lm9vem38rfmjij3jj0mk5bvnt/apache-maven-3.6.3
2. install 时,会下载第三方jar 表,远程仓库用的配置是,自动下载的maven 的setting.xml,默认的远程仓库是:https://repo1.maven.org/maven2/ ,
这样下载速度特别慢,我把setting.xml 中的远程仓库改成 aliyun 后,下载速度特别快。
3. ./mvnw clean install -DskipTests 执行完成后,在 idea 中配置 PrestoServer ,
Presto 带有示例配置,应该可以开箱即用地进行开发。使用以下选项创建运行配置:
- 主类:
com.facebook.presto.server.PrestoServer
- 虚拟机选项:
-ea -XX:+UseG1GC -XX:G1HeapRegionSize=32M -XX:+UseGCOverheadLimit -XX:+ExplicitGCInvokesConcurrent -Xmx2G -Dconfig=etc/config.properties -Dlog.levels-file=etc/log.properties
- 工作目录:
$MODULE_WORKING_DIR$
或$MODULE_DIR$
(取决于您的 IntelliJ 版本) - 使用模块的类路径:
presto-main
4. 然后启动 PrestoServer,启动日志一直卡主不动,然后报空指针异常,跟踪日志发现,ArtifactResolver.resolvePom 方法报空指针。看到日志中,一直打印从 /Users/admin/.m2/repository 中拉包,突然想到 install 用的自定义的 本地仓库!!!,赶紧把启动时的,maven 本地仓库 和远程仓库改成 自定义,然后启动就成功了
三、432 版本地启动报错
1. 在config 中加一下配置没用
2. 在trino-root.xml 中加上maven 仓库地址、本地仓库地址就可以了
<repositories>
<repository>
<id>maven-ossez</id>
<name>OSSEZ Repository</name>
<url>https://maven.aliyun.com/repository/public</url>
</repository>
<repository>
<id>example-repo</id>
<name>Example Repository</name>
<url>file:/Users/admin/Desktop/idea/maven/maven_repo</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>maven-ossez</id>
<name></name>
<url>https://maven.aliyun.com/repository/public</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>