Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.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/4/maven/6.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:在pom.xml中配置并行构建_Java_Maven - Fatal编程技术网

Java Maven:在pom.xml中配置并行构建

Java Maven:在pom.xml中配置并行构建,java,maven,Java,Maven,Maven具有执行并行构建的能力: 是否可以在pom.xml或settings.xml中指定此参数?重复此选项可能会很烦人。您可以在MAVEN\u OPTS环境变量中指定该选项(请参阅)。一旦这样做了,你就不必重复了。配置环境变量取决于您的系统。但是,这将影响环境中的所有maven运行。也许您可以启用不同的环境,这样只有您真正想要并行构建的项目才能在这样的环境中运行。我找不到在pom.xml或settings.xml中配置的方法在unix系统上有一个很好的解决方案,请编辑您的.bashrc并添

Maven具有执行并行构建的能力:


是否可以在pom.xml或settings.xml中指定此参数?重复此选项可能会很烦人。

您可以在
MAVEN\u OPTS
环境变量中指定该选项(请参阅)。一旦这样做了,你就不必重复了。配置环境变量取决于您的系统。但是,这将影响环境中的所有maven运行。也许您可以启用不同的环境,这样只有您真正想要并行构建的项目才能在这样的环境中运行。

我找不到在pom.xml或settings.xml中配置的方法在unix系统上有一个很好的解决方案,请编辑您的.bashrc并添加别名

alias mvnp='mvn -T 4'
现在从终端开始,使用mvnp运行maven

mvnp clean install

这个解决方案有点老套,但对我有效。它包括指定一个新的环境变量,将值-T3分配给它,并将该变量添加到Maven启动脚本中

对于Windows(Linux在parens中):

  • 打开环境变量窗口:计算机->属性->高级系统设置->环境变量
  • 使用所需的值添加属性MAVEN\u CMD\u LINE\u OPTS。在我的例子中,
    -t3
    ,因为我希望Maven使用3个线程并行构建
  • 编辑mvn.cmd文件(在Linux中为mvn文件)。查找实际执行Java命令的部分,行以%MAVEN_Java_EXE开头(在Linux中:通常在定义主类的行之后:org.codehaus.plexus.classworlds.launcher.launcher)

  • 将%MAVEN_CMD_LINE_OPTS%添加到行的末尾(在Linux中:$MAVEN_CMD_LINE_OPTS)

  • 在Maven项目上运行mvn compile时,您现在将看到以下行:

    使用线程计数为3的多线程生成器实现

    这样做的好处是用户可以“覆盖”此值。因此,如果用户执行mvn-T4编译,那么将使用4个线程,而不是默认的3个线程

    注:

  • 我在Maven 3.3.9上尝试过这个,但是这个概念应该适用于任何Maven 版本
  • 多线程构建可能会遇到插件不可用的问题 特别是定制插件不是线程安全的。所以使用时要小心,小心 考虑在问题的情况下禁用此修复程序。

  • 无法在pom中定义
    -T..
    选项,因为它既不属于pom,也不属于settgins.xml文件。你为什么要重复?在那里使用连续集成,您将只执行一次配置?如果您使用unix add alias执行此命令,我将在本地计算机上一天执行多次构建。例如,别名paralel_mvn='mvn-T 4 clean install'。如果使用windows,请编写一个简单的批处理文件。据我所知,
    MAVEN_OPTS
    的可能副本只能用于指定JVM属性。
    -T
    选项是特定于maven的选项,因此不能使用
    maven_OPTS
    将此选项传递给maven。如果在这方面有错误,我很高兴被纠正。我同意-您不能在
    MAVEN\u OPTS
    中设置
    -T
    。它导致错误:
    无法识别的选项:-T0.5C错误:无法创建Java虚拟机。错误:发生致命异常。程序将退出。
    谢谢您的回答。我在Windows10上的Eclipse2019-6中使用maven 3.8。与其把它放在
    %MAVEN\u JAVA\u EXE%
    行的末尾,不如把它放在
    %MAVEN\u OPTS%
    后面的那一行。
    mvnp clean install