当前位置: 首页>编程语言>正文

idea test 编译文件 idea编译问题

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 test 编译文件 idea编译问题,idea test 编译文件 idea编译问题_idea test 编译文件,第1张

   配置环境变量就不说了,比较简单,主要再提示一下,安装scala环境变量之前,一定要先安装jdk环境。因为弱弱的scala眼光贼好,用到了天下第一的java类库

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

   当配置好scala环境时,就可以到主目录下的pom.xml里,这里其实参照的官网的步骤来的,官方编译方法参考地址   按照官方的编译方法来看,我找到了位置,如下图:

idea test 编译文件 idea编译问题,idea test 编译文件 idea编译问题_idea test 编译文件_02,第2张

   上图是我按照我的实际环境填的,因为我是参照官网做的,所以我的环境也是尽量与官网一致,可以根据实际环境修改。

<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 test 编译文件 idea编译问题,idea test 编译文件 idea编译问题_maven_03,第3张

3.4 编译

   在主目录下,即下图,打开cmd窗口。如下图位置,注意我编译没有在ideal里执行,建议还是别了,因为编译的时候内存不足,我把能关掉的都关掉了。

idea test 编译文件 idea编译问题,idea test 编译文件 idea编译问题_idea test 编译文件_04,第4张

   按照官网要求,在最外层位置,即上图,先运行下边的命令:

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

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



https://www.xamrdz.com/lan/5p31961842.html

相关文章: