eirslett / frontend-maven-plugin

"Maven-node-grunt-gulp-npm-node-plugin to end all maven-node-grunt-gulp-npm-plugins." A Maven plugin that downloads/installs Node and NPM locally, runs NPM install, Grunt, Gulp and/or Karma.
Apache License 2.0
4.25k stars 870 forks source link

M2E Infinite Loop using 0.0.22 #164

Open MatthewEdge opened 9 years ago

MatthewEdge commented 9 years ago

I have a working configuration of the plugin in Eclipse using version 0.0.16. This is the POM entry (I have left out the DownloadRoot entries for security reasons):

  <plugin>
            <groupId>com.github.eirslett</groupId>
            <artifactId>frontend-maven-plugin</artifactId>
            <version>0.0.16</version>
            <configuration>
                <workingDirectory>src/main/resources/static</workingDirectory>
            </configuration>

            <executions>
                <execution>
                    <id>install node and npm</id>
                    <goals>
                        <goal>install-node-and-npm</goal>
                    </goals>
                    <configuration>
                        <nodeVersion>v0.10.33</nodeVersion>
                        <npmVersion>1.4.21</npmVersion>
                       <nodeDownloadRoot>http://internal/proxy/here/</nodeDownloadRoot>
                        <npmDownloadRoot>http://internal/proxy/here/</npmDownloadRoot>
                    </configuration>
                </execution>
                <execution>
                    <id>npm install</id>
                    <goals>
                        <goal>npm</goal>
                    </goals>
                    <!-- Optional configuration which provides for running any npm command -->
                    <configuration>
                        <arguments>install</arguments>
                    </configuration>
                </execution>

                <execution>
                    <id>grunt build</id>
                    <goals>
                        <goal>grunt</goal>
                    </goals>
                    <phase>generate-resources</phase>
                    <configuration>
                        <arguments>build</arguments>
                    </configuration>
                </execution>
            </executions>
        </plugin>

When upgrading to version 0.0.22 M2E gets stuck building the workspace. Same POM, different version. I have seen this happen before with previous plugins. Is this a known issue?

When using 0.0.16 the execution steps get flagged by M2E as errors but the project builds and runs perfectly fine. Even integrates with Jenkins perfectly.

Any ideas?

Cheers for a great plugin!

MatthewEdge commented 9 years ago

As a side note, the M2E plugin seems to fail on the "Invoking Maven Project Builder" step. It will try to execute this step, no errors are thrown, and then endlessly retry the build step. I also tested incrementally between versions and it seems that every version higher than 0.0.16 is affected on my machine.

I am using Eclipse Luna 4.4 on Mac OSX 10.9.5. It's simply the Eclipse IDE for Java Developers with the bundled M2E version 1.5.0.20140606

Arkh1 commented 9 years ago

+1 to this. I seem to be having the same problem. Running 0.0.22

eirslett commented 9 years ago

@karlvr Have you seen this error before?

karlvr commented 9 years ago

I've seen something like this when using imagemin. Can you find out more about where it's hanging? Perhaps do a ps x | grep node to see if there are lots of node processes (this is what it looked like with the imagemin situation, and what I fixed in #150). Otherwise perhaps look at the Maven Console in Eclipse to look for clues or a jstack dump of Eclipse?

eljenso commented 9 years ago

Had the same issue. It began when I added

<properties>
  <gulp.build.task>default</gulp.build.task>
</properties>

and the gulp argument:

<execution>
  <id>gulp dev</id>
  <goals>
    <goal>gulp</goal>
  </goals>
  <configuration>
    <arguments>${gulp.build.task}</arguments>
  </configuration>
</execution>

I'm mostly working with sublime and console and had no issues, but my co-workers, which are working with eclipse, had the loop issue.

Downgrading to 0.0.19 resolved the issue for us.

Edit: Was a bit quick to comment. We downgraded to 0.0.19, not 0.0.21. 0.0.21 was not in the repository, 0.0.20 was available but had the same issue.

eirslett commented 9 years ago

Does it have anything to do with the renaming of parameters? https://github.com/eirslett/frontend-maven-plugin/commit/632ceb41403f9b50e66d6b1e9364733a3bdfc2d7

Arkh1 commented 9 years ago

As a side note... When I turn off automatic builds I don't experience this problem. I can run one off builds and it works just fine. It would be ideal if I didn't have to turn off automatic builds though.

karlvr commented 9 years ago

I believe that 0.0.16 plugin execution not covered by lifecycle configuration is something that was improved / fixed in later versions.

Sent from my iPhone

On 7/03/2015, at 11:14 am, Matthew Edge notifications@github.com wrote:

Not sure if this is related but suddenly using 0.0.16 throws maven errors:

Plugin execution not covered by lifecycle configuration: com.github.eirslett:frontend-maven-plugin:0.0.16:grunt (execution: grunt build, phase: generate-resources) pom.xml Maven Project Build Lifecycle Mapping Problem

Throws this error for npm install and install node and npm executions shown on the examples page.

Should I log a separate issue for this?

— Reply to this email directly or view it on GitHub.

MatthewEdge commented 9 years ago

Gotcha. I managed to get the process working with 0.0.22 by disabling Automatic Builds as @Arkh1 suggested. Minor inconvenience but it's working

karlvr commented 9 years ago

It would be great to find out where this is getting stuck. Perhaps you could post a stack dump of the Eclipse JVM when it is stuck? And perhaps the output of ps x | grep node as well?

MatthewEdge commented 9 years ago

Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.31-b07 mixed mode):

"Thread-361" #1257 prio=5 os_prio=31 tid=0x0000000122677800 nid=0x13283 runnable [0x000000013286c000] java.lang.Thread.State: RUNNABLE at java.io.FileInputStream.readBytes(Native Method) at java.io.FileInputStream.read(FileInputStream.java:246) at java.io.BufferedInputStream.read1(BufferedInputStream.java:284) at java.io.BufferedInputStream.read(BufferedInputStream.java:345)

"Thread-360" #1256 prio=5 os_prio=31 tid=0x0000000123b0b000 nid=0x169eb runnable [0x00000001270f3000] java.lang.Thread.State: RUNNABLE at java.io.FileInputStream.readBytes(Native Method) at java.io.FileInputStream.read(FileInputStream.java:246) at java.io.BufferedInputStream.read1(BufferedInputStream.java:284) at java.io.BufferedInputStream.read(BufferedInputStream.java:345)

"Worker-212" #1237 prio=5 os_prio=31 tid=0x000000010380c000 nid=0x14d3b in Object.wait() [0x000000012c30d000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)

"RMI TCP Connection(2)-10.34.231.149" #1227 daemon prio=9 os_prio=31 tid=0x0000000123d8c000 nid=0x14edf runnable [0x0000000128f41000] 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)

"JMX server connection timeout 1226" #1226 daemon prio=9 os_prio=31 tid=0x0000000123ea5000 nid=0x11d1b in Object.wait() [0x00000001315fc000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) at com.sun.jmx.remote.internal.ServerCommunicatorAdmin$Timeout.run(ServerCommunicatorAdmin.java:168)

"RMI Scheduler(0)" #1225 daemon prio=9 os_prio=31 tid=0x0000000123e51800 nid=0x1084f waiting on condition [0x00000001314f9000] java.lang.Thread.State: TIMED_WAITING (parking) at sun.misc.Unsafe.park(Native Method)

"RMI TCP Connection(1)-10.34.231.149" #1224 daemon prio=9 os_prio=31 tid=0x0000000133814000 nid=0x16d7f runnable [0x0000000130f72000] 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)

"RMI TCP Accept-0" #1223 daemon prio=9 os_prio=31 tid=0x0000000123914800 nid=0xf1d3 runnable [0x000000012cbf1000] java.lang.Thread.State: RUNNABLE at java.net.PlainSocketImpl.socketAccept(Native Method) at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:404) at java.net.ServerSocket.implAccept(ServerSocket.java:545) at java.net.ServerSocket.accept(ServerSocket.java:513) at sun.management.jmxremote.LocalRMIServerSocketFactory$1.accept(LocalRMIServerSocketFactory.java:52) at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(TCPTransport.java:400) at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(TCPTransport.java:372) at java.lang.Thread.run(Thread.java:745)

"Attach Listener" #1191 daemon prio=9 os_prio=31 tid=0x0000000101b00000 nid=0x10d63 waiting on condition [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"Worker-211" #1162 prio=5 os_prio=31 tid=0x0000000103ee6800 nid=0xee03 in Object.wait() [0x000000011eb13000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java:502) at org.eclipse.core.internal.jobs.ThreadJob.waitForRun(ThreadJob.java:270)

"Worker-210" #1122 prio=5 os_prio=31 tid=0x0000000135331000 nid=0x11e33 in Object.wait() [0x00000001294eb000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)

"process reaper" #1106 daemon prio=10 os_prio=31 tid=0x0000000135159800 nid=0x1136f runnable [0x000000011bcd2000] java.lang.Thread.State: RUNNABLE at java.lang.UNIXProcess.waitForProcessExit(Native Method) at java.lang.UNIXProcess.access$500(UNIXProcess.java:55) at java.lang.UNIXProcess$4.run(UNIXProcess.java:226) 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)

"Worker-209" #1094 prio=5 os_prio=31 tid=0x0000000102adb000 nid=0x14217 in Object.wait() [0x000000012a5a9000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)

"Thread-230" #1092 daemon prio=5 os_prio=31 tid=0x00000001356a8800 nid=0x10d53 runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"Worker-208" #1091 prio=5 os_prio=31 tid=0x0000000128156000 nid=0xe32b in Object.wait() [0x0000000125274000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)

"Worker-207" #1090 prio=5 os_prio=31 tid=0x0000000123e5a000 nid=0x16027 in Object.wait() [0x000000011fdc5000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)

"Worker-206" #1082 prio=5 os_prio=31 tid=0x00000001036d8000 nid=0x7fbf in Object.wait() [0x000000011fc40000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)

"Worker-205" #1080 prio=5 os_prio=31 tid=0x0000000121b5b000 nid=0x10fa7 in Object.wait() [0x0000000122e8e000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java:502) at java.lang.UNIXProcess.waitFor(UNIXProcess.java:262)

"Worker-204" #1078 prio=5 os_prio=31 tid=0x0000000102e1f800 nid=0xf3d3 in Object.wait() [0x000000011c1c1000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)

"Worker-203" #1075 prio=5 os_prio=31 tid=0x0000000102879000 nid=0xeacb in Object.wait() [0x0000000120b72000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)

"Thread-229" #967 daemon prio=5 os_prio=31 tid=0x0000000102877800 nid=0x1694f runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"Thread-228" #965 daemon prio=5 os_prio=31 tid=0x0000000103efb800 nid=0x123d7 runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"Thread-222" #929 daemon prio=5 os_prio=31 tid=0x0000000128548800 nid=0x133a7 runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"Thread-221" #926 daemon prio=5 os_prio=31 tid=0x00000001239e5800 nid=0xe733 runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"Thread-220" #925 daemon prio=5 os_prio=31 tid=0x0000000133f9c000 nid=0x1630f runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"Thread-215" #910 daemon prio=5 os_prio=31 tid=0x000000010210c800 nid=0x16f1b runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"Thread-214" #909 daemon prio=5 os_prio=31 tid=0x0000000122760000 nid=0x102a3 runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"Thread-213" #900 daemon prio=5 os_prio=31 tid=0x0000000102ca4800 nid=0xf36f runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"qtp1443951678-888" #888 prio=5 os_prio=31 tid=0x0000000123d8f000 nid=0x14fc7 waiting on condition [0x0000000134a15000] java.lang.Thread.State: TIMED_WAITING (parking) at sun.misc.Unsafe.park(Native Method)

"qtp1443951678-887" #887 prio=5 os_prio=31 tid=0x0000000133d00000 nid=0xf4bf waiting on condition [0x0000000134912000] java.lang.Thread.State: TIMED_WAITING (parking) at sun.misc.Unsafe.park(Native Method)

"qtp1443951678-886" #886 prio=5 os_prio=31 tid=0x0000000133cff800 nid=0x15d9b waiting on condition [0x000000013480f000] java.lang.Thread.State: TIMED_WAITING (parking) at sun.misc.Unsafe.park(Native Method)

"qtp1443951678-885" #885 prio=5 os_prio=31 tid=0x0000000121b33000 nid=0x12f37 waiting on condition [0x000000013470c000] java.lang.Thread.State: TIMED_WAITING (parking) at sun.misc.Unsafe.park(Native Method)

"qtp1443951678-884 Acceptor1 SelectChannelConnector@127.0.0.1:62411" #884 prio=5 os_prio=31 tid=0x0000000121b32000 nid=0xac0b waiting for monitor entry [0x0000000134609000] java.lang.Thread.State: BLOCKED (on object monitor) at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:225)

"qtp1443951678-883 Acceptor0 SelectChannelConnector@127.0.0.1:62411" #883 prio=5 os_prio=31 tid=0x000000011b0ba000 nid=0x15363 runnable [0x0000000134506000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method) at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:241)

"qtp1443951678-882 Selector1" #882 prio=5 os_prio=31 tid=0x0000000123d97000 nid=0xe917 runnable [0x0000000134403000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.KQueueArrayWrapper.kevent0(Native Method) at sun.nio.ch.KQueueArrayWrapper.poll(KQueueArrayWrapper.java:198) at sun.nio.ch.KQueueSelectorImpl.doSelect(KQueueSelectorImpl.java:103) at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)

"qtp1443951678-881 Selector0" #881 prio=5 os_prio=31 tid=0x0000000135146800 nid=0x1000f runnable [0x0000000134300000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.KQueueArrayWrapper.kevent0(Native Method) at sun.nio.ch.KQueueArrayWrapper.poll(KQueueArrayWrapper.java:198) at sun.nio.ch.KQueueSelectorImpl.doSelect(KQueueSelectorImpl.java:103) at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)

"HashSessionScavenger-0" #880 daemon prio=1 os_prio=31 tid=0x0000000121b5c000 nid=0x14bf3 in Object.wait() [0x0000000133587000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) at java.util.TimerThread.mainLoop(Timer.java:552)

"Thread-197" #852 daemon prio=5 os_prio=31 tid=0x0000000123df4000 nid=0x14743 runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"Recommenders-Timeout-Manager" #736 prio=5 os_prio=31 tid=0x0000000121cc7000 nid=0xedbf waiting on condition [0x000000011face000] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method)

"Timer-0" #734 daemon prio=6 os_prio=31 tid=0x0000000121a40000 nid=0x1573f in Object.wait() [0x0000000131ff0000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) at java.util.TimerThread.mainLoop(Timer.java:552)

"com.google.inject.internal.util.$Finalizer" #731 daemon prio=6 os_prio=31 tid=0x00000001009a3000 nid=0x14977 in Object.wait() [0x0000000131802000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:142)

"Thread-159" #722 daemon prio=5 os_prio=31 tid=0x0000000101c17000 nid=0x14dbb runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"Thread-158" #711 daemon prio=5 os_prio=31 tid=0x0000000102a0a000 nid=0x123bf runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"Thread-151" #688 daemon prio=5 os_prio=31 tid=0x0000000121785800 nid=0x1130f runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"Thread-150" #686 daemon prio=5 os_prio=31 tid=0x00000001028d2000 nid=0x105d7 runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"Thread-137" #664 daemon prio=5 os_prio=31 tid=0x0000000102db1000 nid=0xf03f runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"Thread-134" #655 daemon prio=5 os_prio=31 tid=0x00000001287e1000 nid=0xb43b runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"Thread-118" #633 daemon prio=5 os_prio=31 tid=0x00000001211b7800 nid=0x14623 runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"Thread-117" #631 daemon prio=5 os_prio=31 tid=0x0000000121193800 nid=0x1041f runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"Thread-115" #623 daemon prio=5 os_prio=31 tid=0x000000011b221800 nid=0x1206b runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"Thread-114" #616 daemon prio=5 os_prio=31 tid=0x0000000100a32000 nid=0xed03 runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"Thread-113" #611 daemon prio=5 os_prio=31 tid=0x0000000102cd4000 nid=0xe56f runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"Thread-112" #610 daemon prio=5 os_prio=31 tid=0x0000000101325000 nid=0x150f3 runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"Thread-111" #609 daemon prio=5 os_prio=31 tid=0x000000012d7af800 nid=0x1536f runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"Thread-110" #605 daemon prio=5 os_prio=31 tid=0x00000001020b8000 nid=0xe09b runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"Thread-103" #587 daemon prio=5 os_prio=31 tid=0x000000010369b000 nid=0xdf37 runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"Thread-88" #565 daemon prio=5 os_prio=31 tid=0x00000001020f2000 nid=0x1467b runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"Thread-81" #556 daemon prio=5 os_prio=31 tid=0x000000012d470800 nid=0x12f2f runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"Thread-80" #553 daemon prio=5 os_prio=31 tid=0x0000000121f6c000 nid=0x14ba7 runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"Thread-79" #548 daemon prio=5 os_prio=31 tid=0x0000000103ee7800 nid=0xed47 runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"Thread-74" #527 daemon prio=5 os_prio=31 tid=0x0000000121dc6800 nid=0x11e4b runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"Thread-73" #217 daemon prio=5 os_prio=31 tid=0x0000000101296800 nid=0x10293 runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"Thread-72" #216 daemon prio=5 os_prio=31 tid=0x0000000100b36000 nid=0x14293 runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"Thread-71" #200 daemon prio=5 os_prio=31 tid=0x0000000121a8c800 nid=0xf43b runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"Thread-63" #189 daemon prio=5 os_prio=31 tid=0x000000012d64f800 nid=0xece3 runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"Thread-61" #180 daemon prio=5 os_prio=31 tid=0x0000000101852800 nid=0x1513f runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"Thread-56" #168 daemon prio=1 os_prio=31 tid=0x0000000121ccd000 nid=0x14a23 waiting on condition [0x000000012bd2b000] java.lang.Thread.State: TIMED_WAITING (sleeping) at java.lang.Thread.sleep(Native Method) at com.aptana.core.util.ConnectionReaper.run(ReapingObjectPool.java:36)

"Thread-55" #151 daemon prio=5 os_prio=31 tid=0x0000000103871000 nid=0x1500f runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"Thread-54" #150 daemon prio=5 os_prio=31 tid=0x0000000100c64800 nid=0x14d47 runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"Thread-53" #146 daemon prio=5 os_prio=31 tid=0x000000012e450000 nid=0x11c3b runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"Thread-52" #127 daemon prio=5 os_prio=31 tid=0x00000001216cf000 nid=0x10fb3 runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"Thread-51" #126 daemon prio=5 os_prio=31 tid=0x0000000121964000 nid=0x11683 runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"Thread-50" #109 prio=5 os_prio=31 tid=0x0000000123d4e800 nid=0x12103 waiting on condition [0x0000000124d2c000] java.lang.Thread.State: TIMED_WAITING (sleeping) at java.lang.Thread.sleep(Native Method) at com.aptana.core.util.ConnectionReaper.run(ReapingObjectPool.java:36)

"Thread-20" #72 daemon prio=1 os_prio=31 tid=0x0000000121acc000 nid=0x1120b waiting on condition [0x000000012989b000] java.lang.Thread.State: TIMED_WAITING (sleeping) at java.lang.Thread.sleep(Native Method) at com.aptana.core.util.ConnectionReaper.run(ReapingObjectPool.java:36)

"PHP Debugger Daemon Thread - Port: 9002" #65 daemon prio=5 os_prio=31 tid=0x0000000123d4b000 nid=0x10b03 runnable [0x0000000126ff0000] java.lang.Thread.State: RUNNABLE at java.net.PlainSocketImpl.socketAccept(Native Method) at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:404) at java.net.ServerSocket.implAccept(ServerSocket.java:545) at java.net.ServerSocket.accept(ServerSocket.java:513) at org2.eclipse.php.internal.debug.core.daemon.AbstractDebuggerCommunicationDaemon$ReceiverThread.run(AbstractDebuggerCommunicationDaemon.java:241) at java.lang.Thread.run(Thread.java:745)

"PHP Debugger Daemon Thread - Port: 10001" #64 daemon prio=5 os_prio=31 tid=0x0000000101370800 nid=0x10a13 runnable [0x000000012508a000] java.lang.Thread.State: RUNNABLE at java.net.PlainSocketImpl.socketAccept(Native Method) at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:404) at java.net.ServerSocket.implAccept(ServerSocket.java:545) at java.net.ServerSocket.accept(ServerSocket.java:513) at org2.eclipse.php.internal.debug.core.daemon.AbstractDebuggerCommunicationDaemon$ReceiverThread.run(AbstractDebuggerCommunicationDaemon.java:241) at java.lang.Thread.run(Thread.java:745)

"Thread-8" #47 daemon prio=1 os_prio=31 tid=0x000000011b037800 nid=0x1060b waiting on condition [0x000000012b228000] java.lang.Thread.State: TIMED_WAITING (sleeping) at java.lang.Thread.sleep(Native Method) at com.aptana.core.util.ConnectionReaper.run(ReapingObjectPool.java:36)

"[ThreadPool Manager] - Idle Thread" #45 daemon prio=5 os_prio=31 tid=0x00000001216c4000 nid=0x172b in Object.wait() [0x000000012336b000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java:502) at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run(Executor.java:106)

"FSEvent thread" #42 daemon prio=5 os_prio=31 tid=0x0000000102fec800 nid=0xf503 runnable [0x0000000127560000] java.lang.Thread.State: RUNNABLE at net.contentobjects.jnotify.macosx.JNotify_macosx.nativeNotifyLoop(Native Method) at net.contentobjects.jnotify.macosx.JNotify_macosx.access$5(JNotify_macosx.java:81) at net.contentobjects.jnotify.macosx.JNotify_macosx$1.run(JNotify_macosx.java:70)

"Java indexing" #31 daemon prio=4 os_prio=31 tid=0x0000000123af3000 nid=0xd827 in Object.wait() [0x0000000123268000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java:502) at org.eclipse.jdt.internal.core.search.processing.JobManager.run(JobManager.java:382)

"EventAdmin Async Event Dispatcher Thread" #30 daemon prio=6 os_prio=31 tid=0x0000000100cee800 nid=0xd72f in Object.wait() [0x0000000120fc6000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java:502) at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:400)

"Bundle File Closer" #26 daemon prio=6 os_prio=31 tid=0x0000000121951800 nid=0xce0f in Object.wait() [0x000000011ffae000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java:502) at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:400)

"EMF Reference Cleaner" #22 daemon prio=5 os_prio=31 tid=0x00000001034e3000 nid=0xae07 in Object.wait() [0x000000011f21c000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:142)

"Worker-JM" #17 prio=5 os_prio=31 tid=0x0000000103458800 nid=0xaa03 in Object.wait() [0x000000011bf64000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) at org.eclipse.core.internal.jobs.InternalWorker.run(InternalWorker.java:59)

"[Timer] - Main Queue Handler" #16 daemon prio=5 os_prio=31 tid=0x00000001029d4000 nid=0xa807 in Object.wait() [0x000000011ec16000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) at org.eclipse.equinox.internal.util.impl.tpt.timer.TimerImpl.run(TimerImpl.java:141)

"Start Level: Equinox Container: f0cfaf9e-2fc7-0014-17c4-e3c61852b499" #14 daemon prio=5 os_prio=31 tid=0x00000001029cf800 nid=0xa403 in Object.wait() [0x000000011e810000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method)

"Framework Event Dispatcher: Equinox Container: f0cfaf9e-2fc7-0014-17c4-e3c61852b499" #13 daemon prio=5 os_prio=31 tid=0x0000000103259000 nid=0xa203 in Object.wait() [0x000000011e70d000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java:502) at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:400)

"Active Thread: Equinox Container: f0cfaf9e-2fc7-0014-17c4-e3c61852b499" #11 prio=5 os_prio=31 tid=0x0000000103451800 nid=0xa00b waiting on condition [0x000000011e60a000] java.lang.Thread.State: TIMED_WAITING (parking) at sun.misc.Unsafe.park(Native Method)

"Service Thread" #9 daemon prio=9 os_prio=31 tid=0x000000010381b000 nid=0x7403 runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"C1 CompilerThread3" #8 daemon prio=9 os_prio=31 tid=0x000000010280f000 nid=0x7203 waiting on condition [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"C2 CompilerThread2" #7 daemon prio=9 os_prio=31 tid=0x0000000102000000 nid=0x7003 waiting on condition [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"C2 CompilerThread1" #6 daemon prio=9 os_prio=31 tid=0x0000000102803800 nid=0x6e03 waiting on condition [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"C2 CompilerThread0" #5 daemon prio=9 os_prio=31 tid=0x00000001030a8800 nid=0x6c03 waiting on condition [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"Signal Dispatcher" #4 daemon prio=9 os_prio=31 tid=0x0000000101026800 nid=0x6a03 runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE

"Finalizer" #3 daemon prio=8 os_prio=31 tid=0x0000000102801000 nid=0x6603 in Object.wait() [0x000000011a0be000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:142)

"Reference Handler" #2 daemon prio=10 os_prio=31 tid=0x0000000103072800 nid=0x6403 in Object.wait() [0x0000000119fbb000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java:502) at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:157)

"main" #1 prio=6 os_prio=31 tid=0x0000000103018000 nid=0x707 runnable [0x00007fff5fbfd000] java.lang.Thread.State: RUNNABLE at org.eclipse.swt.internal.cocoa.OS.objc_msgSend_bool(Native Method) at org.eclipse.swt.internal.cocoa.NSRunLoop.runMode(NSRunLoop.java:42) at org.eclipse.swt.widgets.Display.sleep(Display.java:4680) at org.eclipse.ui.application.WorkbenchAdvisor.eventLoopIdle(WorkbenchAdvisor.java:368) at org.eclipse.ui.internal.ide.application.IDEWorkbenchAdvisor.eventLoopIdle(IDEWorkbenchAdvisor.java:918) at org.eclipse.ui.internal.Workbench$3.eventLoopIdle(Workbench.java:498) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1155) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1032) at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:148) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:636) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:579) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:135) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:648) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:603) at org.eclipse.equinox.launcher.Main.run(Main.java:1465)

"VM Thread" os_prio=31 tid=0x0000000103070000 nid=0x6203 runnable

"GC task thread#0 (ParallelGC)" os_prio=31 tid=0x0000000100817000 nid=0x5203 runnable

"GC task thread#1 (ParallelGC)" os_prio=31 tid=0x0000000100817800 nid=0x5403 runnable

"GC task thread#2 (ParallelGC)" os_prio=31 tid=0x0000000100818000 nid=0x5603 runnable

"GC task thread#3 (ParallelGC)" os_prio=31 tid=0x000000010100d800 nid=0x5803 runnable

"GC task thread#4 (ParallelGC)" os_prio=31 tid=0x0000000101009800 nid=0x5a03 runnable

"GC task thread#5 (ParallelGC)" os_prio=31 tid=0x000000010100a000 nid=0x5c03 runnable

"GC task thread#6 (ParallelGC)" os_prio=31 tid=0x000000010100a800 nid=0x5e03 runnable

"GC task thread#7 (ParallelGC)" os_prio=31 tid=0x0000000103004800 nid=0x6003 runnable

"VM Periodic Task Thread" os_prio=31 tid=0x000000010381c000 nid=0x7603 waiting on condition

JNI global references: 1583

Arkh1 commented 9 years ago

Any updates since getting the dump? It would be nice to be able to use this plugin in eclipse without it breaking the automatic build process.

kiwipiet commented 9 years ago

I have the same issue.
I was to quick to confirm 0.0.19 working. Even after downgrading to 0.0.19 I still got stuck in an infinite workspace build loop.

Then I realised that the build loop is because the uglified js files are included in my eclipse project. Excluding all *.min.js files from the JavaScript/Include Path fixed this issue for me.

To recap, go to the "project properties\JavaScript\Include path" and exclude all *.min.js files fixed this for me. If you have a dist folder then exclude that.

Arkh1 commented 9 years ago

@kiwipiet I had a similar conclusion, but didn't think to add the dist dir to the js/exclusion path. I tried adding the dist dir to the exclusion path just now and still have problems. The build cycle doesn't go on forever, but the resources that are modified as part of the grunt tasks are marked as out of sync. As such, the changes are not reflected in the browser. If I refresh the out of sync files then it triggers another build (making auto refresh not an option due to endless loop problems again.)

EthanNguyenDev commented 9 years ago

@kiwipiet : your solution is working fine for me. I've just excluded those files generated by gulp for eclipse build. Thanks.

karlvr commented 9 years ago

@MatthewEdge Sorry it took me so long to come back to this thread. Examining the thread dump, it appears to me that the Grunt process is running - so this comes down to working out why the Grunt process is getting into trouble!

I had a similar thing with my Gulp workflow, that resulted in PR #150 to resolve it. No idea if this issue is at all related.

Can you look on the Maven Console in Eclipse to see if there is any output from Grunt about what it's doing to give a clue as to where it might be stuck?

karlvr commented 9 years ago

@kiwipiet It seems like you might be talking about a download-loop issue rather than the download getting stuck issue that @MatthewEdge reported? Is that correct, do you think?

ethikz commented 9 years ago

I've noticed this issue as well and it seems to be that gulp would run and minify files and eclipse would see them as changed so it would rerun maven which would then rerun the gulp

EthanNguyenDev commented 9 years ago

Hi, My previous comment about excluding the built files by Gulp in Eclipse didn't solve the issue. Try to mark the files as read-only then Gulp is unable to re-write those files again :)

bhochberger commented 9 years ago

Hi, i started yesterday using the frontent-plugin and ran straight into this problem. I think ethikz is right. The source of the problem is that the plugin uses the working directory for installation of nodejs/npm and forces Eclipse to rebuild the workspace if grunt/gulp are run there. I can see a lot of change-Triggers in the progress tab of Eclipse. Shouldn't the plugin install nodejs/npm in the target directory and run grunt/gulp there? As far as I understood mvn-lifecycle, if I first run 'mvn install' and afterwards 'mvn clean' I should get the original state in my working directory. That is not the case with this plugin, because nodejs and npm are not deleted because they reside in the wrong place.

I think the solution should be that the frontend-plugin in a first step copies the package.json and Gruntfile.js to a directory in the target-branch and then does the rest of the work there.

eirslett commented 9 years ago

The reason why node/npm is installed in the "node" directory is that the binaries are cached between runs, so that you don't have to download them every time you run the build - only the first time. You can fix that by configuring the maven-clean-plugin to wipe the node folder as well. The reason why they're not stored in target by default, is that the target folder is always wiped, so you wouldn't get the cache functionality. It's a trade-off.

bhochberger commented 9 years ago

But that doesn't solve the Eclipse problem. I cannot tell Eclipse to don't watch for changes in that folder. Caching problems should be solved by putting the needed sources into your local nexus, or am i wrong?

eirslett commented 9 years ago

@karlvr I gave you access to the repository, since you're the "owner" of the Eclipse functionality (kind of), I don't use Eclipse so it's difficult for me to debug and maintain it. Is that okay for you?

karlvr commented 9 years ago

@eirslett Thank you, sure thing.

karlvr commented 9 years ago

I'm not sure this issue is about where node and npm are downloaded? Is it because the grunt / gulp workflows that people are using are outputting into the source directories?

eirslett commented 9 years ago

It would certainly be an issue if src/main/javascript/a.js and src/main/javascript/b.js were collapsed into src/main/javascript/x.min.js - in the same directory. What I do is to output the finished sources into src/main/webapp/assets/x.min.js (etc).

Arkh1 commented 9 years ago

In my case I am building from src/main/src to src/main/webapp (strange I know, but this is due to existing structure that we had to work around.) I removed src/main/webapp from the javascript include path and added src/main/src. I also excluded bowercomponents/*/_ as I am running ngAnnotate against one of the 3rd party directives that I am using. I am still experiencing the issue mentioned throughout this thread.

eirslett commented 9 years ago

If you delete everything in src/main/java and test/*, clean up the pom.xml file (no other dependencies, maven plugins etc.) so that the only files left are javascript files, does the same problem still occur? Even with only one javascript file in src/main/src? Even if that script only has one line in it, like console.log("hello");? In which case, maybe you could push your code (what's left of it) to GitHub, and we can reproduce the problem!

Arkh1 commented 9 years ago

I am headed out to ng-vegas tomorrow so will be unavailable for a while, but I can see about getting you a code base for reproduction when I get back.

jcrowder commented 9 years ago

edit - as soon as I wrote this -- the looping returned for unknown reasons. :( edit 2 - setting gulp srcdir property, and now I'm no longer looping:

                <execution>
                    <id>gulp build</id>
                    <goals>
                        <goal>gulp</goal>
                    </goals>
                    <phase>generate-resources</phase>
                    <configuration>
                        <srcdir>${project.basedir}/src/main/frontend/src</srcdir>

I experienced this the last couple of days on a new project setup that was using gulp from ${project.basedir}/src/main/frontend/src to ${project.basedir}/src/main/frontend/dist. I assumed in my case that the loop is a result of eclipse's automatic building being repeatedly triggered by the resource changes during the gulp build.

I reconfigured my build to put frontend resources into ${project.build.directory}/frontend and the "infinite loop" immediately stopped. m2e automatically marks ${project.build.directory} as a derived folder, so it doesn't trigger the rebuild. Works well for me so far.

sergueim commented 9 years ago

Adding m2e lifecycle-mapping plugin solved the problem. In pom.xml:

<pluginManagement>
    <plugins>
        <plugin>
            <groupId>org.eclipse.m2e</groupId>
            <artifactId>lifecycle-mapping</artifactId>
            <version>1.0.0</version>
            <configuration>
                <lifecycleMappingMetadata>
                   <pluginExecutions>
                        <pluginExecution>
                            <pluginExecutionFilter>
                                <groupId>com.github.eirslett</groupId>
                                <artifactId>frontend-maven-plugin</artifactId>
                                <versionRange>[0.0.23,)</versionRange>
                                <goals>
                                    <goal>npm</goal>
                                    <goal>bower</goal>
                                    <goal>gulp</goal>
                                </goals>
                            </pluginExecutionFilter>
                            <action>
                               <execute>
                                 <runOnIncremental>false</runOnIncremental>
                               </execute >
                             </action>
                        </pluginExecution>
                    </pluginExecutions>
                </lifecycleMappingMetadata>
            </configuration>
        </plugin>
    </plugins>
</pluginManagement>

May 12/2015 update: I guess I owe an explanation.

Consider gulp goal, as one. Essentially we allow gulp to go outside of the context and do whatever: like format C: or rm recursively. One can 'achieve' similar effects with other maven plugins as well, e.g.: Ant run or alike. It is possible then (in eclipse) to modify the file system while in the mid of maven's Debug/Install. What would we expect from eclipse then?

Note: there is no such issue if running from command line: mvn clean install

I see 2 solutions (eclipse): (1) 'save/hide your gold in a cave', that is place your resources into a 'safe place'; (2) stick to eclipse's strategy - disable eclipse's incremental build in case we expect fs modifications from an outside: gulp/grunt/ant, etc.

I decided on (2). It worked for me. Sorry for pasting an invalid XML and thanks to Philip to correct it.

Any of the above two solutions is perfect ?

Thank you.

Arkh1 commented 9 years ago

Adding the srcdir and outputdir options fixed the issue for me. I also had marked my output dir as derived and removed it from the js include path. Not sure if fixing the issue was a combination of these or if I could remove the other settings. No reason to remove them at this point since they are all logical settings.

@jcrowder - Thanks for the heads up on these settings!

NameFILIP commented 9 years ago

Thanks @sergueim! P.S. The <pluginExecutions> opening tag is missing

sergueim commented 9 years ago

@NameFILIP Good catch, Filip, thank you. Updated.

ethikz commented 9 years ago

Since I am a UI Developer and don't use Eclipse myself, these issues are from Java developers using eclipse. I have essentially solved this issue by just compiling my assets to the target directory and change my working directory in tomcat to the target directory to get around this issue.

This way it doesn't compile to source nor does it mess up Eclipse. Also when we run a maven build it will still run the gulp task, compile assets to the correct target directory.

Not sure if this will help some at all or if @sergueim solution is better.

radut commented 9 years ago

I have figured this out by marking the goals as ignored for m2e.. and I run manually gulp watch when I develop, and for buld, mvn clean package will trigger the gulp build.

                        <pluginExecution>
                                <pluginExecutionFilter>
                                    <groupId>com.github.eirslett</groupId>
                                    <artifactId>frontend-maven-plugin</artifactId>
                                    <versionRange>[0.0.16,)</versionRange>
                                    <goals>
                                        <goal>install-node-and-npm</goal>
                                        <goal>npm</goal>
                                        <goal>gulp</goal>
                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <ignore></ignore>
                                </action>
                            </pluginExecution>
mrafaqi commented 8 years ago

I have the same issue with version 0.0.26 and Eclipse Kepler. It seems to work fine if node/packages folder exists within target directory but that creates inconvenience on maven-clean (re-downloading of all npm packages again). The above mentioned solution by radut is another way to temporarily disable it however it would be nice to use those incremental build features (automatic compilation of sass->css, html2js on file changes). I am eager if the problem is fixed and it could be very handy to take it in use :).

rustyx commented 8 years ago

Note the <pluginManagement> part needs to go inside the <build> section in the POM. @sergueim might be worth wrapping it inside <build> in your post.

vaibhav-s commented 8 years ago

Saw the same issue. But, it starts works fine when "working directory" is changed from src/main/webapp/static to src/main/resources/static and install directory is removed. But, all installation folders are included in class path due to this. Generally happens when install directory is in root folder of the project.

<workingDirectory>src/main/resources/static</workingDirectory>
ena1106 commented 7 years ago

@kiwipiet Thank you, your solution solved my problem too. I was generating a file with gulp ngconstant (see Jhipster scaffold). I exluded the file from the Javascript sources and the build no longer loops.

hendimarcos commented 7 years ago

Thanks @sergueim! I just needed to add goal grunt <goal>grunt</goal>

matteopelucco commented 7 years ago

Hi guys, still not clear to me how to stop infinite looping (I have it.. Neon 2, simple maven project).

This is my folder structure

/html /src/main/java /src/main/resources I am using grunt. Source files are in /html and after min, concat, ... all 'dist' files are copied to /src/main/resources If I run Eclipse with automatic project build disabled, of course, loop does not happen. But as soon as I re-enable automatic project build, loop is back. I tried to play with @sergueim solution, but nothing.. I attach the pom.xml (omitting some project infos.. but it is completed). [frontend-maven-plugin-loop.txt](https://github.com/eirslett/frontend-maven-plugin/files/744943/frontend-maven-plugin-loop.txt) Any help is appreciated, thanks..