Maven在编译过程中卡住了

Maven在编译过程中卡住了,maven,build,Maven,Build,我使用的是mvn clean install命令,似乎maven在编译类时陷入了一些死锁,它仍然处于这种状态- [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ service-nextgen --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] Copying 1 resource [INFO] Copying 4

我使用的是mvn clean install命令,似乎maven在编译类时陷入了一些死锁,它仍然处于这种状态-

    [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ service-nextgen ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 4 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.6.1:compile (default-compile) @ service-nextgen ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 363 source files to C:\Users\service-nextgen\target\classes
如果我使用java Visual VM可视化线程转储,我将获得以下信息:

"RMI TCP Connection(3)-3.202.32.1" #20 daemon prio=5 os_prio=0 tid=0x000000001f246000 nid=0x2454 runnable [0x000000002118e000]
   java.lang.Thread.State: RUNNABLE
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(SocketInputStream.java:150)
    at java.net.SocketInputStream.read(SocketInputStream.java:121)
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:265)
    - locked <0x00000000ff832010> (a java.io.BufferedInputStream)
    at java.io.FilterInputStream.read(FilterInputStream.java:83)
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:550)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$240(TCPTransport.java:683)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$$Lambda$2/10873147.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

   Locked ownable synchronizers:
    - <0x00000000ff8321d0> (a java.util.concurrent.ThreadPoolExecutor$Worker)


"main" #1 prio=5 os_prio=0 tid=0x0000000001ff8000 nid=0x2b38 runnable [0x0000000002501000]
   java.lang.Thread.State: RUNNABLE
    at java.lang.Object.hashCode(Native Method)
    at java.util.HashMap.hash(HashMap.java:338)
    at java.util.HashMap.get(HashMap.java:556)
    at com.sun.tools.javac.comp.Infer$InferenceContext.cachedCapture(Infer.java:2309)
“RMI TCP连接(3)-3.202.32.1”#20守护进程优先级=5 os_优先级=0 tid=0x000000001f246000 nid=0x2454可运行[0x000000002118e000]
java.lang.Thread.State:可运行
位于java.net.SocketInputStream.socketRead0(本机方法)
位于java.net.SocketInputStream.read(SocketInputStream.java:150)
位于java.net.SocketInputStream.read(SocketInputStream.java:121)
在java.io.BufferedInputStream.fill处(BufferedInputStream.java:246)
在java.io.BufferedInputStream.read处(BufferedInputStream.java:265)
-锁定(java.io.BufferedInputStream)
位于java.io.FilterInputStream.read(FilterInputStream.java:83)
位于sun.rmi.transport.tcp.tcpttransport.handleMessages(tcpttransport.java:550)
位于sun.rmi.transport.tcp.tcpttransport$ConnectionHandler.run0(tcpttransport.java:826)
在sun.rmi.transport.tcp.tcpttransport$ConnectionHandler.lambda$run$240(tcpttransport.java:683)
在sun.rmi.transport.tcp.tcpttransport$ConnectionHandler$$Lambda$2/10873147.run(未知源)
位于java.security.AccessController.doPrivileged(本机方法)
位于sun.rmi.transport.tcp.tcpttransport$ConnectionHandler.run(tcpttransport.java:682)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
运行(Thread.java:745)
锁定可拥有的同步器:
-(一个java.util.concurrent.ThreadPoolExecutor$Worker)
“main”#1优先级=5操作系统优先级=0 tid=0x0000000001ff8000 nid=0x2b38可运行[0x0000000002501000]
java.lang.Thread.State:可运行
位于java.lang.Object.hashCode(本机方法)
位于java.util.HashMap.hash(HashMap.java:338)
获取(HashMap.java:556)
在com.sun.tools.javac.comp.infere$referencecontext.cachedCapture上(Infer.java:2309)

不确定如何找到根本原因。

在maven编译器插件中添加编译器参数后,我能够识别问题:


[...]
[...]
org.apache.maven.plugins

在编译阶段生成代码。

您是否尝试在普通命令行上执行
mvn clean install
?我不知道此RMI连接来自何处?在maven编译器插件中添加编译器参数后,我能够识别问题:-verbose-Xlint:all,-options,-此路径在编译过程中逐个显示类,并且能够看到编译器被卡住的位置。能否将设置为
true
-Dmaven.compiler.fork=true
)。这可能有助于缩小问题的范围,无论是Maven还是
javac
本身。(当使用
-X
运行
mvn
时,它还打印出它使用的
javac
命令行,因此您可以通过自己运行
javac
将Maven从等式中完全消除。)
<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.7.0</version>
        <configuration>
          <compilerArgs>
            <arg>-verbose</arg>
            <arg>-Xlint:all,-options,-path</arg>
          </compilerArgs>
        </configuration>
      </plugin>
    </plugins>
    [...]
  </build>
  [...]
</project>