idea中编译DataSphereStudio编译方法及问题排查
最近工作需要用到DataSphereStudio
,一个国产的数据应用开发门户。在编译过程中遇到了几个问题,现整理了一下方法,如下:
1. 下载代码
代码是从git上下载的,下载地址是: DataSphereStudio Git下载地址
2. idea加载
我的开发工具是idea,本身DataSphereStudio
是一个maven项目,经常用,所以用idea打开的。
3. 编译经过
3.1 scala环境
在编译的过程中,发现了报错,原来DataSphereStudio
有一部分代码是用scala
语言写的,因此需要安装scala
安装包及配置环境变量。
下载scala
比较简单,直接到官网上下一个msi
的windows系统用
的安装包,直接运行安装即可。
注意这里有个坑,默认scala
会提示安装到C:\Program Files (x86)
文件夹下,一定要改成别的路径,我是改到了C:\Program Files\scala
路径下。如下:
配置环境变量就不说了,比较简单,主要再提示一下,安装scala环境变量之前,一定要先安装jdk环境。因为弱弱的scala
眼光贼好,用到了天下第一的java类库
。
3.2 修改pom.xml中的应用版本号
当配置好scala
环境时,就可以到主目录下的pom.xml
里,这里其实参照的官网的步骤来的,官方编译方法参考地址 按照官方的编译方法来看,我找到了位置,如下图:
上图是我按照我的实际环境填的,因为我是参照官网做的,所以我的环境也是尽量与官网一致,可以根据实际环境修改。
<properties>
<dss.version>0.7.0</dss.version>
<linkis.version>0.9.1</linkis.version>
<scala.version>2.11.8</scala.version>
<jdk.compile.version>1.8</jdk.compile.version>
<maven.version>3.3.3</maven.version>
</properties>
此处注意一个坑,即<scala.version>2.11.8</scala.version>
,如果你下载的源码跟我的这里是一样的,你本地安装的scala
环境变量首先最好是高于2.11.8
版本。但是并不代表你这里可以直接改成你安装的版本,亲测会打包失败的~~~。
比如我安装的scala
版本是2.13.1
,但是我这里直接替换成这个版本编译直接报错。报错内容如下:
[WARNING] Expected all dependencies to require Scala version: 2.13.1
[WARNING] com.webank.wedatasphere.linkis:linkis-common:0.9.1 requires scala ver
sion: 2.11.8
[WARNING] Multiple versions of scala libraries detected!
[WARNING] Zinc server is not available at port 3030 - reverting to normal increm
ental compile
[INFO] Using incremental compilation
[INFO] Compiling 1 Scala source and 30 Java sources to E:\znworkspace\datasphere
\DataSphereStudio\dss-common\target\classes...
[INFO]
[INFO] --- maven-compiler-plugin:3.3:compile (default-compile) @ dss-common ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 30 source files to E:\znworkspace\datasphere\DataSphereStudio\d
ss-common\target\classes
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ ds
s-common ---
[WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e
. build is platform dependent!
虽然错误很多,但是细心看一下,就会发现有这么一句:
Expected all dependencies to require Scala version: 2.13.1
[WARNING] com.webank.wedatasphere.linkis:linkis-common:0.9.1 requires scala ver
sion: 2.11.8
编译期望是用2.13.1
,但是实际上它里边的某些包是需要2.11.8
,所以这里不能改,改了反而报错。
3.3 idea配置scala
3.3.1 安装scala插件
当然要想让idea支持scala,还需要安装插件,idea安装插件,只需要File--->Settings---->Plugins
中搜索scala
即可,注意要下载带language
说明的插件。
3.3.2 配置scala sdk
下载完之后重启idea,然后随便找一个scala
后缀的文件,idea就会提示去配置scala
环境。只需要按照提示去找到你本地的scala
目录,加载进去即可。这里我当时没有截图,所以我也不知道怎么让它出来,其实跟jdk
是一样的。
3.3.3 修改scala compiler
据我搜到的资料,大家都说如果一个项目既有java
,又有scala
,那在编译的时候,要先编译scala
,再编译java
。这个在idea
里有配置。
需要到File--->Settings---->Build,Execution,Deployment--->Compiler--->scala compiler
中,找到compiler order
,在右上方,将其修改为Scala Then Java
即可。
请注意,在改完之后,一定要编译一下项目。如下图:
3.4 编译
在主目录下,即下图,打开cmd
窗口。如下图位置,注意我编译没有在idea
l里执行,建议还是别了,因为编译的时候内存不足,我把能关掉的都关掉了。
按照官网要求,在最外层位置,即上图,先运行下边的命令:
mvn -N install
异常顺利,直接成功。继续按照文档运行:
mvn clean install
3.4.1 错误一 scala版本不能改
这里就不说了,上边提过。<scala.version>2.11.8</scala.version>
不要改它。
3.4.2 错误二 编译gbk的不可映射字符
这个会在编译的过程中,出来一堆这样的提示,如果你是在idea执行的mvn clean install
可能汉字是乱码。这里是因为scala
插件没指定编码,可以找到最高层的pom.xml
,还是上图里的。
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<id>eclipse-add-source</id>
<goals>
<goal>add-source</goal>
</goals>
</execution>
<execution>
<id>scala-compile-first</id>
<phase>process-resources</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
<execution>
<id>scala-test-compile-first</id>
<phase>process-test-resources</phase>
<goals>
<goal>testCompile</goal>
</goals>
</execution>
<execution>
<id>attach-scaladocs</id>
<phase>verify</phase>
<goals>
<goal>doc-jar</goal>
</goals>
</execution>
</executions>
<configuration>
<scalaVersion>${scala.version}</scalaVersion>
<recompileMode>incremental</recompileMode>
<useZincServer>false</useZincServer>
<!--这里加字符集编码-->
<encoding>utf-8</encoding>
</configuration>
</plugin>
当然,我连maven
的另一个插件,下边也加了字符集编码的配置。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>${jdk.compile.version}</source>
<target>${jdk.compile.version}</target>
<encoding>utf-8</encoding>
</configuration>
</plugin>
3.4.3 错误三 Failed to execute goal net.alchim31.maven:scala-maven-plugin:3.2.2: scala-compile-first XXX…
此问题,可以参照3.3.3
解决,我记得是改了它之后,就没问题了。
3.4.4 错误四 Java HotSpot™ 64-Bit Server VM warning: Insufficient space for shared memory file
这个问题已经是最后发生的问题了,当然就是内存不足的问题,这里,就是为什么上边我在执行编译命令的时候,没有用IDEA
,为了减少内存的利用,我直接把所有的无关的程序都关掉了,包括浏览器,然后安心打包,就行了。
3.5 编译成功
以上就是我遇到的问题。
终于也是见到了编译成功的字样。虽然现在我还不知道编译成功后要干啥,还要接着搜文档学习后边的。