Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Maven在Docker上的构建和测试速度非常慢_Java_Docker_Maven_Gitlab Ci_Gitlab Ci Runner - Fatal编程技术网

Java Maven在Docker上的构建和测试速度非常慢

Java Maven在Docker上的构建和测试速度非常慢,java,docker,maven,gitlab-ci,gitlab-ci-runner,Java,Docker,Maven,Gitlab Ci,Gitlab Ci Runner,我正在尝试设置Gitlab CI/CD,以便为Java/Maven/Spring启动应用程序编译和运行测试。 我已经安装了一个Gitlab Runner并创建了我的.Gitlab-ci.yml,这一切都很有效,但速度非常慢。 我为我的跑步者尝试了许多配置,但都没有成功 所以我退了一步,试着在本地机器上运行Docker上的测试 直接在我的机器上运行的构建+测试需要17分钟。 在docker上运行的build+测试需要1个多小时 我获得的最佳性能是使用以下docker命令: docker run-i

我正在尝试设置Gitlab CI/CD,以便为Java/Maven/Spring启动应用程序编译和运行测试。 我已经安装了一个Gitlab Runner并创建了我的.Gitlab-ci.yml,这一切都很有效,但速度非常慢。 我为我的跑步者尝试了许多配置,但都没有成功

所以我退了一步,试着在本地机器上运行Docker上的测试

直接在我的机器上运行的构建+测试需要17分钟。 在docker上运行的build+测试需要1个多小时

我获得的最佳性能是使用以下docker命令:

docker run-it--rm--name comp2--mount type=bind,source=“C:/ProjetosJava/eaud”,destination=/usr/src/mymaven-e MAVEN_OPTS='-Xdebug-Xnoagent-Djava.compiler=NONE-Xmx4096m-Xms1024m-XX:MaxPermSize=1024m-Dmaven.repo.local=.m2/repository-XX:+tieredcomilation-XX:TieredStopAtLevel=1'-w/usr/src/mymaven-MAVEN-3.3-jdk-8/bin/bash

在bash里面我做到了:

mvn-s.m2/settings.xml干净编译测试


我需要docker内部的构建至少有一个关闭时间(17分钟)。

发现了问题,是Maven Surefire插件

默认情况下,surefire将派生JVM,当它这样做时,它不会从mvn命令继承JAVA_选项

因此,我能够通过将这些配置配置到插件来缩短构建时间:


org.apache.maven.plugins
maven surefire插件
3.0.0-M5
真的
-Xms256m-Xmx1024m-XX:MaxPermSize=512m-Xverify:none-XX:TieredStopAtLevel=1-XX:-TieredCompilation
假的
0
org.apache.maven.surefire
surefire-junit47
3.0.0-M5
秘密是:argLine with
-Xverify:none-XX:TieredStopAtLevel=1-XX:-tieredcomployment

而且
forkCount=0

发现了问题,是Maven Surefire插件

默认情况下,surefire将派生JVM,当它这样做时,它不会从mvn命令继承JAVA_选项

因此,我能够通过将这些配置配置到插件来缩短构建时间:


org.apache.maven.plugins
maven surefire插件
3.0.0-M5
真的
-Xms256m-Xmx1024m-XX:MaxPermSize=512m-Xverify:none-XX:TieredStopAtLevel=1-XX:-TieredCompilation
假的
0
org.apache.maven.surefire
surefire-junit47
3.0.0-M5
秘密是:argLine with
-Xverify:none-XX:TieredStopAtLevel=1-XX:-tieredcomployment

而且
forkCount=0

我不知道您的构建速度慢的原因(我想,如果没有进一步的信息,没有其他人会知道),但我知道的是
clean compile test
表明您不知道Maven的生命周期。对于测试,只需运行
clean test
。是否也看到您将内存配置为4 GiB内存?真的需要吗?4gb是一种尝试。。我什么都试过了,但是构建速度比本地机器上的要慢……@renanleandrof抱歉,这个评论听起来可能有点傲慢。但无论如何,您应该将
clean compile test
更改为
clean test
。多少LoC?有多少个测试?有多少模块?测试需要多长时间?第二:一般来说,容器中的构建总是比裸机上的构建慢,因为您要添加几个层……而且您还没有在docker容器中映射本地缓存,这意味着每个构建都会下载很多。为什么要使用Maven 3.3?而不是最近的?为什么容器中的内存设置如此庞大?你的Docker守护进程支持吗?内存增强不会减少构建时间……我不知道为什么构建速度慢(我想,如果没有进一步的信息,没有其他人会知道),但我知道的是,
clean compile test
表明您不知道Maven的生命周期。对于测试,只需运行
clean test
。是否也看到您将内存配置为4 GiB内存?真的需要吗?4gb是一种尝试。。我什么都试过了,但是构建速度比本地机器上的要慢……@renanleandrof抱歉,这个评论听起来可能有点傲慢。但无论如何,您应该将
clean compile test
更改为
clean test
。多少LoC?有多少个测试?有多少模块?测试需要多长时间?第二:一般来说,容器中的构建总是比裸机上的构建慢,因为您要添加几个层……而且您还没有在docker容器中映射本地缓存,这意味着每个构建都会下载很多。为什么要使用Maven 3.3?而不是最近的?为什么容器中的内存设置如此庞大?你的Docker守护进程支持吗?内存增强不会减少构建时间…我怀疑是否需要依赖项,因为它是由项目的适当依赖项(junit)自动完成的。。。你真的需要1 GiB来进行单元测试吗?我怀疑是否需要依赖关系,因为它是由项目的适当依赖关系(junit)自动完成的。。。你真的需要1 GiB来进行单元测试吗?