mvn 打包_Spark源码打包编译的过程

前言

上篇文章介绍了下 安装sbt环境 启动scala项目

安装SBT环境运行Scala项目

为什么要弄这个 因为我本来是想对spark源码编译部署

spark是用scala语言编译的

spark源码

https://gitee.com/pingfanrenbiji/spark

spark提供的编译方式

编译的前提是将所有的依赖包都下载下来

而资源包管理方式有maven、graddle、sbt等

maven方式

将maven资源库修改为阿里云资源库

配置方式

方式1
9982f5075c35d8208e1674202eb2c360.png
方式2
aliyunhttps://maven.aliyun.com/repository/publictruefalse
  • 如果你只是配置了repositories,那么你会发现在mvn在下载依赖的时候,一部分从阿里云下载,一部分还是从默认的仓库(https://repo.maven.apache.org )下载

  • 只有项目本身的依赖,走了aliyun这个repository,maven命令需要的插件(比如clean、install都是maven的插件),走的还是默认的repository

方式3

在maven setting文件中

   nexus-aliyun  central    Nexus aliyun  http://maven.aliyun.com/nexus/content/groups/public  

maven编译打包

mvn -DskipTests clean package
fe154848c3fa84c05aad01beeeb51ddf.png

sbt方式

638b99fbc678684a4fbbe9e9682a2c95.png

这样下载依赖包的速度超级慢

原因是从https://repo1.maven.org/maven2/这个国外的资源库网站下载的

那么类似于maven 准备换成国内的资源库

国内资源库配置方法

上面文章介绍的是配置的华为的国内资源库

这里配置下阿里的国内资源库

vim ~/.sbt/repositories

[repositories]
aliyun-maven-repo: https://maven.aliyun.com/repository/public
aliyun-nexus: https://maven.aliyun.com/nexus/content/groups/public/
typesafe: https://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly
maven-central
sonatype-oss-releases
sonatype-oss-snapshots
ivy-sbt-plugin: https://dl.bintray.com/sbt/sbt-plugin-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]

检验配置的国内资源库是否生效

mkdir test
cd test
sbt
show fullResolvers
b6a8703a028f7009b903b1237033c796.png

可以看到 配置的阿里云资源库 已经生效了

既然sbt资源库下载已经换成了国内的资源库了

那么试试吧

9433c449e3d464ba8e259ecce42c999c.png

咦!怎么还是repo1.maven.org

接下来说一下 我努力挣扎的过程 反正结果以失败而告终 最后先放弃 ?

去掉sbt默认从repo1.maven.org下载的配置

第一次尝试

a50a720c25149f262d7bd49af11c2698.png

我是用的=直接将默认的resolvers直接替换掉

而不是用+= 默认加新增的这个

f542ecf5d1ec4e20ea04912321e1fd39.png

但实际效果不行

第二次尝试

我直接在spark源码中全局搜索 repo1.maven.org 没有找到

那么我就想:通过sbt 下载资源库 那么应该在sbt源码中配置的

目的:下载sbt源码 把所有的repo1.maven.org换成阿里云https://maven.aliyun.com/repository/public 然后重新打包

下载sbt源码
https://gitee.com/pingfanrenbiji/sbt.git

替换repo1.maven.org

a94fa20741db6d2cc3d4e8b5d222ba1d.png
执行打包
mkdir sbt-modules
cd sbt-modules

for i in sbt io librarymanagement zinc; do \
     git clone https://gitee.com/pingfanrenbiji/$i.git && (cd $i; git checkout -b develop origin/develop)
   done
   
cd sbt
./sbt-allsources.sh

这个脚本的内容

eb7aaf9db71b823742a85d82d9b77348.png

需要sbt命令

我瞬间凌乱了(因为我的无知)

心理活动:我的目的是下载sbt源码 然后打包生成可执行文件 sbt

但现在我打包 却需要sbt这个可执行文件。

我知道 我暂时搞不清楚这个问题的原因了 所以先准备下sbt环境 执行这个脚本 看看结果如何吧

  • sbt环境

a、上篇文章也介绍了一种方式 就是直接下载sbt资源包 然后配置环境变量

b、这里用另外一种方法

 brew install sbt
 
==> Downloading https://github.com/sbt/sbt/releases/download/v1.3.13/sbt-1.3.13.
==> Downloading from https://github-production-release-asset-2e65be.s3.amazonaws
######################################################################## 100.0%
==> Caveats
You can use $SBT_OPTS to pass additional JVM options to sbt.
Project specific options should be placed in .sbtopts in the root of your project.
Global settings should be placed in /usr/local/etc/sbtopts
==> Summary
?  /usr/local/Cellar/sbt/1.3.13: 9 files, 1.4MB, built in 2 seconds

有了sbt环境 再执行sbt-allsources.sh这个脚本

312a6b11d09046fdebd8beea7fbef9e5.png

瞬间吐血~(怎么还是这个资源库 我不是已经通过修改源码的方式去掉了嘛)

暂时先放弃 因为这块工作上没有要求 是我自己想学习scala研究的

后记

  • 进入一个未知的领域 在有老师指导的情况下 肯定会事半功倍 但往往都没有老师来指导 那只能靠自学

  • 自学虽然会磕磕绊绊 遇到很多挫折但学会了之后 你就会破茧成蝶

朋友们 共勉吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/454141.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

审计日志功能监控

背景:公司的审计日志经常出现不记录命令的情况,但是又无法监控到审计功能是否正常。所以我们思路是,每天从CMDB服务器 ssh登录到每一台主机。如果审计功能正常,则一定会在auditlog.info文件中有登录的记录。如果24小时内这个文件没…

清华大学《操作系统》(十一):处理机调度

一、处理机调度概念 进程切换(上下文切换):切换CPU的当前任务,从一个进程/线程到另一个,保存当前在PCB/TCB中的执行上下文,读取下一个的上下文 CPU调度:从就绪队列中挑选一个进程/线程作为CPU…

通过纯css实现图片居中的多种实现方式

html结构&#xff1a; 1 <div class"demo" style"width: 800px;height: 600px; border:1px solid #ddd"> 2 <img src"default.jpg" width"400" height"300"/> 3 </div> 实现img位于外层div的居中显示…

GCC 命令行详解

作者&#xff1a; www.linuxfans.org mozilla 1。gcc包含的c/c编译器 gcc,cc,c,g,gcc和cc是一样的&#xff0c;c和g是一样的&#xff0c;(没有看太明白前面这半句是什 么意思:))一般c程序就用gcc编译&#xff0c;c程序就用g编译 2。gcc的基本用法 gcc test.c这样将编译出一个…

Java网络编程从入门到精通(5):使用InetAddress类的getHostName方法获得域名

该方法可以得到远程主机的域名&#xff0c;也可以得到本机名。getHostName方法的定义如下&#xff1a; publicString getHostName() 下面是三种创建InetAddress对象的方式&#xff0c;在这三种方式中&#xff0c;getHostName返回的值是不同的。 1&#xff0e;使用getLocalHost方…

猿辅导python面试_猿辅导面试经历—个人感受

今天参加了猿辅导的二面&#xff0c;无数槽点&#xff0c;不知道是不是很多公司都是这样&#xff0c;但是我还是忍不住要逼逼叨。6月10号&#xff0c;我向猿辅导投了简历&#xff0c;想做招聘邀约专员这个岗位&#xff0c;然后hr加了我的微信&#xff0c;要了一份简历之后通知我…

对称加密与非对称加密

&#xff08;一&#xff09;对称加密&#xff08;Symmetric Cryptography&#xff09; 对称加密是最快速、最简单的一种加密方式&#xff0c;加密&#xff08;encryption&#xff09;与解密&#xff08;decryption&#xff09;用的是同样的密钥&#xff08;secret key&#xff…

清华大学《操作系统》(十二):临界区与锁

多进程并发运行&#xff0c;导致多个进程间有资源共享&#xff0c;比如CPU、内存&#xff0c;因此存在不确定性和不可重现&#xff0c;可能导致多次运行结果不一致。因此操作系统需要利用同步机制在并发执行的同时&#xff0c;保证一些操作是原子操作。 互斥是指一个进程占用了…

gcc生成静态库和动态库

gcc生成静态库和动态库一、库文件简介简单地说&#xff0c;库&#xff08;Library&#xff09;就是一组已经写好了的函数和变量、经过编译代码&#xff0c;是为了能够提高开发效率和运行效率而设计的。库分为静态库&#xff08;Static Library&#xff09;和共享库&#xff08;…

python 流式计算框架_流式计算的三种框架:Storm、Spark和Flink

我们知道&#xff0c;大数据的计算模式主要分为批量计算(batch computing)、流式计算(stream computing)、交互计算(interactive computing)、图计算(graph computing)等。其中&#xff0c;流式计算和批量计算是两种主要的大数据计算模式&#xff0c;分别适用于不同的大数据应用…

清华大学《操作系统》(十八):管程于信号量

信号量与管程也是进程间通信的方式。信号量是与锁在同一层级实现的&#xff0c;是操作系统提供的一种协调共享资源访问的方法。信号量由操作系统管理&#xff0c;操作系统作为管理者地位是高于进程的。 一、信号量 1、信号量&#xff08;semaphore&#xff09;&#xff1a;是操…

Iptalbes自动封杀暴力破解(Qmail邮件系统)者的IP地址

今天发现Qmail邮件系统的maillog里面有大量的“user not found”信息&#xff0c;通过下面的日志不难发现&#xff0c;是来自同一IP的很多不同的用户连接Qmail邮件系统认证失败的信息。黑客试图通过这种方式来破解Qmail邮件系统的用户名和密码&#xff0c;从而来发送大量的垃圾…

安装Postman

在web和移动端开发时&#xff0c;常常会调用服务器端的restful接口进行数据请求&#xff0c;为了调试&#xff0c;一般会先用工具进行测试&#xff0c;通过测试后才开始在开发中使用。 这里介绍一下如何在chrome浏览器利用postman应用进行restful api接口请求测试。 因为&#…

python红楼梦词频统计_用 Python 分析《红楼梦》(2)-阿里云开发者社区

6 词频统计完成分词以后&#xff0c;词频统计就非常简单了。我们只需要根据分词结果把片段切分开&#xff0c;去掉长度为一的片段(也就是单字)&#xff0c;然后数一下每一种片段的个数就可以了。这是出现次数排名前 20 的单词&#xff1a;(括号内为频数)可以跟之前只统计出现次…

清华大学《操作系统》(二十):死锁和进程通信

一、死锁 死锁&#xff1a;一组阻塞的进程&#xff08;两个或多个&#xff09;&#xff0c;持有一种资源&#xff0c;等待获取另一个进程所占有的资源&#xff0c;而导致谁都无法执行。 可重复使用的资源&#xff1a; 在一个时间只能一个进程使用&#xff0c;且不能被删除。…

python操作redis实例_Java,php,Python连接并操作redis实例

1、Java连接并操作redis在Eclipse里新建一个java project&#xff0c;导入jedis-*.jar包。示例代码&#xff0c;其他对应的操作类型见&#xff1a;http://my.oschina.net/u/2391658/blog/705069import redis.clients.jedis.Jedis;//示例代码public class RedisTest {public sta…

java: cannot execute binary file 如果遇到这个错,一般是操作系统位数出问题了。

[roottestserver usr]# java/jdk1.6.0_12/bin/java-bash: java/jdk1.6.0_12/bin/java: cannot execute binary file后来检验&#xff0c;检查了一段时间&#xff0c;没有问题&#xff0c;最后有高人提示经验证&#xff0c;是64位版本移到32位上。本文转自 jxwpx 51CTO博客&…

div 自适应高度

自适应高度 &#xff0c;设置最小高度&#xff1b;通常情况下&#xff0c;没有设置高度&#xff0c;div默认自适应高度且无最低高度 1 div{ 2 _height:200px; /* css 注解&#xff1a; 仅IE6设别此属性&#xff0c;假定最低高度是200px &#xff0c;设置高度200px&#xff0c…

GCC使用详情

1.前言 GCC编译器的手册(GCC MANUAL)的英文版已经非常全面&#xff0c;并且结构也非常完善了&#xff0c;只是一直都没有中文的版本&#xff0c;我这次阅读了GCC编译器的主要内容&#xff0c;对手册的内容进行了结构性的了解&#xff0c;认为有必要对这次阅读的内容进行整理&am…

清华大学《操作系统》(二十二):文件系统

文件系统和文件&#xff1a; 文件系统是操作系统中管理持久性数据的子系统&#xff0c;提供数据存储和访问功能&#xff0c;组织、检索、读写访问数据。文件是具有符号名&#xff0c;由字节序列构成的数据项集合&#xff0c;是文件系统的基本数据单位&#xff0c;文件名是文件…