欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

idea中编译DataSphereStudio编译方法及问题排查

程序员文章站 2022-03-08 17:55:04
...

idea中编译DataSphereStudio编译方法及问题排查

   最近工作需要用到DataSphereStudio,一个国产的数据应用开发门户。在编译过程中遇到了几个问题,现整理了一下方法,如下:

1. 下载代码

  代码是从git上下载的,下载地址是: DataSphereStudio Git下载地址

2. idea加载

  我的开发工具是idea,本身DataSphereStudio是一个maven项目,经常用,所以用idea打开的。

3. 编译经过

3.1 scala环境

  在编译的过程中,发现了报错,原来DataSphereStudio有一部分代码是用scala语言写的,因此需要安装scala安装包及配置环境变量。
  下载scala比较简单,直接到官网上下一个msiwindows系统用的安装包,直接运行安装即可。
  注意这里有个坑,默认scala会提示安装到C:\Program Files (x86)文件夹下,一定要改成别的路径,我是改到了C:\Program Files\scala路径下。如下:
idea中编译DataSphereStudio编译方法及问题排查
   配置环境变量就不说了,比较简单,主要再提示一下,安装scala环境变量之前,一定要先安装jdk环境。因为弱弱的scala眼光贼好,用到了天下第一的java类库

3.2 修改pom.xml中的应用版本号

   当配置好scala环境时,就可以到主目录下的pom.xml里,这里其实参照的官网的步骤来的,官方编译方法参考地址
  按照官方的编译方法来看,我找到了位置,如下图:
idea中编译DataSphereStudio编译方法及问题排查
   上图是我按照我的实际环境填的,因为我是参照官网做的,所以我的环境也是尽量与官网一致,可以根据实际环境修改。

 <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即可。
  请注意,在改完之后,一定要编译一下项目。如下图:
idea中编译DataSphereStudio编译方法及问题排查

3.4 编译

   在主目录下,即下图,打开cmd窗口。如下图位置,注意我编译没有在ideal里执行,建议还是别了,因为编译的时候内存不足,我把能关掉的都关掉了。
idea中编译DataSphereStudio编译方法及问题排查
   按照官网要求,在最外层位置,即上图,先运行下边的命令:

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 编译成功

   以上就是我遇到的问题。
   终于也是见到了编译成功的字样。虽然现在我还不知道编译成功后要干啥,还要接着搜文档学习后边的。

相关标签: 后端