Details
-
Bug
-
Resolution: Fixed
-
Major
-
None
-
Jenkins 1.436, android-emulator-plugin 1.18, Ubuntu 10.04 master, ubuntu 11.04 or windows 7 slave.
Using maven-release-plugin with javasvn provider.
Description
Use of maven-release-plugin with the android-emulator-plugin fails because the logcat temporary log file is captured as a modified file in the maven workspace.
mavenExecutionResult exceptions not empty message : Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.2.1:prepare (default-cli) on project parent: Cannot prepare the release because you have local modifications : [C:\jenkins\slave\workspace\testjob\logcat_5637825123254995961.log:unknown] cause : Cannot prepare the release because you have local modifications : [C:\jenkins\slave\workspace\testjob\logcat_5637825123254995961.log:unknown] Stack trace : org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.2.1:prepare (default-cli) on project parent: Cannot prepare the release because you have local modifications : [C:\jenkins\slave\workspace\testjob\logcat_5637825123254995961.log:unknown] at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:319) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) at org.jvnet.hudson.maven3.launcher.Maven3Launcher.main(Maven3Launcher.java:79) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.codehaus.plexus.classworlds.launcher.Launcher.launchStandard(Launcher.java:329) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:239) at org.jvnet.hudson.maven3.agent.Maven3Main.launch(Maven3Main.java:158) at hudson.maven.Maven3Builder.call(Maven3Builder.java:112) at hudson.maven.Maven3Builder.call(Maven3Builder.java:70) at hudson.remoting.UserRequest.perform(UserRequest.java:118) at hudson.remoting.UserRequest.perform(UserRequest.java:48) at hudson.remoting.Request$2.run(Request.java:287) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: org.apache.maven.plugin.MojoFailureException: Cannot prepare the release because you have local modifications : [C:\jenkins\slave\workspace\testjob\logcat_5637825123254995961.log:unknown] at org.apache.maven.plugins.release.PrepareReleaseMojo.prepareRelease(PrepareReleaseMojo.java:310) at org.apache.maven.plugins.release.PrepareReleaseMojo.execute(PrepareReleaseMojo.java:258) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) ... 27 more Caused by: org.apache.maven.shared.release.ReleaseFailureException: Cannot prepare the release because you have local modifications : [C:\jenkins\slave\workspace\testjob\logcat_5637825123254995961.log:unknown] at org.apache.maven.shared.release.phase.ScmCheckModificationsPhase.execute(ScmCheckModificationsPhase.java:153) at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:206) at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:142) at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:104) at org.apache.maven.plugins.release.PrepareReleaseMojo.prepareRelease(PrepareReleaseMojo.java:302) ... 30 more
I cannot easily work around this by adding a checkModificationExcludes entry into the release:prepare parameters because it does not take a wildcard filename (needed to match the logcat_*.log temporary filename).
I have managed to workaround this by building a local copy of the plugin that uses a file suffix of .log~ (maven ignores that because it treats is as a backup file). Example patch snippet to do this below.
- final FilePath logcatFile = build.getWorkspace().createTempFile("logcat_", ".log"); + final FilePath logcatFile = build.getWorkspace().createTempFile("logcat_", ".log~");
That is not a proper solution but it does work.
I guess that the proper solution will involve generating a temporary file outside of the workspace somewhere on the build slave.