Быстрая компиляция Scala кода с помощью Maven
Если Вы когда либо работали с Scala(например для работы со Spark Streaming), то вы очень быстро поняли, что компиляция кода занимает очень много времени. Есть много причин, по которым scalaс так долго компилирует код.
Далее скачиваем и устанавливаем mvnsh:
Но всётаки есть варианты, как сделать компиляцию кода быстрее. Многие используют инкрементный режим в sbt(Simple Build Tools) как решение этого вопроса. В этом режиме sbt остаётся запущеным и ему не нужно тратить время на запуск JVM каждый раз, когда нужно скомпилировать код.
Кроме sbt остаётся очень много пользователей Maven-a как инструмента для компиляции кода. Поэтому появился zinc, который является автономной версией sbt c инкрементой компиляцией.
Забегая на перёд скажу, что zinc вместе с mvnsh даёт намного лучший результат чем стандартный maven.
Давайте поставим и проверим это на своём коде:
Устанавливаем Zinc с сайта: https://github.com/typesafehub/zinc:
cd /usr/local/src/
wget http://downloads.typesafe.com/zinc/0.3.9/zinc-0.3.9.tgz
tar -zxvf zinc-0.3.9.tgz
ln -s /usr/local/src/zinc-0.3.9/bin/zinc /usr/local/bin/zinc
zinc -start
Далее скачиваем и устанавливаем mvnsh:
cd /usr/local/src/
wget http://repo1.maven.org/maven2/org/sonatype/maven/shell/dist/mvnsh-assembly/1.1.0/mvnsh-assembly-1.1.0-bin.tar.gz
tar -xzvf mvnsh-assembly-1.1.0-bin.tar.gz
ln -s /usr/local/src/mvnsh-1.1.0/bin/mvnsh /usr/local/bin/mvnsh
Конфигурация Maven проекта для использования сервера Zinc:
<build>
<plugins>
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>testCompile</goal>
</goals>
<configuration>
<args>
<arg>-make:transitive</arg>
<arg>-dependencyfile</arg>
<arg>${project.build.directory}/.scala_dependencies</arg>
</args>
</configuration>
</execution>
<execution>
<id>scala-test-compile</id>
<phase>process-test-resources</phase>
<goals>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
<configuration>
<jvmArgs>
<jvmArg>-Xss2m</jvmArg>
</jvmArgs>
<recompileMode>incremental</recompileMode>
<useZincServer>true</useZincServer>
</configuration>
</plugin>
</plugins>
</build>
Компиляция проекта:
- Запустите zinc в терминале zinc -start
- Запустите mvnsh в терминале mvnsh
- В mvnsh используйте стандартные команды как maven-e
Первая сборка или сборка после команды 'mvn clean' по прежнему будет занимать столько же времени, но все последующие сборки будут намного быстрее. Если Вы забудете запустить zinc, то maven будет использовать стандартный компилятор.
Коментарі
Дописати коментар