Когда я использую Maven для запуска модульных тестов для моего приложения Java EE, я получаю странную ошибку: org.apache.maven.plugin.MojoExecutionException: невозможно скопировать артефакт в рабочий каталог , вызванныйa java.io.FileNotFoundException: D: \ Work \ Projets \ RT_GAF \ Dev \ Sandbox \ client \ target \ classes (доступ запрещен)
Структура приложения Maven:
- ... \ Dev \ Sandbox \: корень приложения, это модуль 'pom', который перечисляет другие модули
- ... \ Dev \ Sandbox \ common \: 'модуль jar ', содержит классы, общие для клиента и сервера, и тесты (только для JUnit)
- ... \ Dev \ Sandbox \ client \: модуль' jar ', содержит классы умного клиента (Swing и т. д.) итесты (только JUnit), развернутые с помощью Java Web Start
- ... \ Dev \ Sandbox \ server \: 'jar', содержат серверные классы (MVC, DAO и т. д.) и тесты (как JUnit, так и Arquillian))
- ... \ Dev \ Sandbox \ webapp \: модуль 'war', содержит веб-элементы (JSP, изображения, web.x)ml и т. д.), АБСОЛЮТНО НЕТ КЛАССОВ ИЛИ ИСПЫТАНИЙ, получит jar-файлы 'common' и 'server'
- ... \ Dev \ Sandbox \ application \: 'ear', содержит application.xml, получит 'webapp 'war
Как уже говорилось, у нас есть тесты JUnit и Arquillian.
Выполнение теста "mvn test -Pjbossas-remote-6" (профиль используется для тестов Arquillian для туннелирования выполнения тестов в контейнере на JBoss 6) из корня приложения не удается :
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Sandbox ........................................... SUCCESS [0.003s]
[INFO] Sandbox Common .................................... SUCCESS [45.003s]
[INFO] Sandbox Client .................................... SUCCESS [20.226s]
[INFO] Sandbox Server .................................... SUCCESS [49.064s]
[INFO] Sandbox WebApp .................................... FAILURE [3.128s]
[INFO] Sandbox Application ............................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1:57.663s
[INFO] Finished at: Fri Oct 21 10:07:03 CEST 2011
[INFO] Final Memory: 107M/478M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.mojo.webstart:webstart-maven-plugin:1.0-beta-1:jnlp-download-servlet (default) on project sandbox-webapp: Unable to copy an artifact to the working directory: D:\Work\Projets\RT_GAF\Dev\Sandbox\client\target\classes (Access is denied) -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo.webstart:webstart-maven-plugin:1.0-beta-1:jnlp-download-servlet (default) on project sandbox-webapp: Unable to copy an artifact to the working directory
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217)
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.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: org.apache.maven.plugin.MojoExecutionException: Unable to copy an artifact to the working directory
at org.codehaus.mojo.webstart.JnlpDownloadServletMojo.retrieveJarResources(JnlpDownloadServletMojo.java:454)
at org.codehaus.mojo.webstart.JnlpDownloadServletMojo.execute(JnlpDownloadServletMojo.java:136)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
... 19 more
Caused by: java.io.FileNotFoundException: D:\Work\Projets\RT_GAF\Dev\Sandbox\client\target\classes (Access is denied)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at org.codehaus.plexus.util.FileUtils.copyFile(FileUtils.java:950)
at org.codehaus.mojo.webstart.AbstractBaseJnlpMojo.copyJarAsUnprocessedToDirectoryIfNecessary(AbstractBaseJnlpMojo.java:569)
at org.codehaus.mojo.webstart.JnlpDownloadServletMojo.retrieveJarResources(JnlpDownloadServletMojo.java:423)
... 22 more
Как видите, тесты в модулях 'common', 'client' и 'server' выполняются корректно (ууу!), Но выполнение тестов останавливается на уровне модуля webapp дажехотя этот модуль не содержит абсолютно никаких классов (никаких бизнес-классов, никаких тестов).
Обратите внимание, что мы можем видеть ссылки Java Web Start в трассировке стека (" JnlpDownloadServletMojo ").
Что еще более удивительно, в ошибке упоминается путь модуля 'client' , когда ошибка возникает во время обработки модуля 'webapp'.
Если я пытаюсь выполнить тесты напрямую в модуле 'webapp', он работает нормально (пустые строки удалены):
-------------------------------------------------------
T E S T S
-------------------------------------------------------
There are no tests to run.
Results :
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
Ребята, вы знаете, что происходит?Почему выполнение тестов останавливается?И как я могу это исправить?
Спасибо за ваше время.
С уважением