2014-10-30 1 views
1

Привет Maven/Perforce Эксперты,Maven SCM не слушает неволей выход триггера

Я пытаюсь реализовать автоматическое управление версиями из Maven артефактов для проекта, который использует Perforce в VCS. Это заставило меня выбрать maven-scm-plugin и maven-release-плагин для достижения моей цели. Мы используем триггеры в perforce, который проверяет наличие нарушений в содержимом xml для каждой фиксации.

checkstyle_xml change-content //depot/project/....xml " /p4/triggers/checkstyle-trigger.pl %user% %changelist% /p4" 

К сожалению, когда я запускаю команду «МВН -X -e -B SCM: редактировать релиз: обновление-версия Scm: приезд», чтобы редактировать файл, обновить версию и представить неволей, специалист не почитайте результат от триггера и не сумейте построить. Однако, как вы можете видеть, это изменение в конечном итоге представлено.

СТЕК TRACE ИСПОЛЬЗОВАНИЕ XML КОТОРАЯ ИМЕЕТ TRIGGER ВКЛЮЧЕНО

[DEBUG] Sending changelist: 
Change: new 

Description: 
    Auto increment pom version during build process. Reviewed by: RE 

Files: 
    //depot/project/pom.xml 

[ERROR] Provider message: 
[ERROR] Unable to submit 
[ERROR] Command output: 
[ERROR] Debug: starting trigger script 
Change 351157 submitted. 

[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 4.112s 
[INFO] Finished at: Thu Oct 30 14:51:51 PDT 2014 
[INFO] Final Memory: 23M/219M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-scm-plugin:1.7:checkin (default-cli) on project phoenix: Command failed.Unable to submit -> [Help 1] 
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal  org.apache.maven.plugins:maven-scm-plugin:1.7:checkin (default-cli) on project phoenix: Command failed.Unable to submit 
    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:320) 
    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:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    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: Command failed.Unable to submit 
    at org.apache.maven.scm.plugin.AbstractScmMojo.checkResult(AbstractScmMojo.java:439) 
    at org.apache.maven.scm.plugin.CheckinMojo.execute(CheckinMojo.java:83) 
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) 
    ... 19 more 
[ERROR] 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles: 
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException 

Я представил файл локально, чтобы обеспечить неволей триггер не плюнуть код ошибки, и это на самом деле возвращает SUCCESS тоже. Я не уверен, почему maven не почитает триггеры.

p4 –u testuser submit -d "Test" pom.xml 
Submitting change 351166. 
Locking 1 files ... 
edit //depot/project/pom.xml#25 
Debug: starting trigger script 
Change 351166 submitted. 

$ echo $? 
0 

Я проверил сценарий с текстовым файлом, который не активирован неволей триггер и Maven возвращает результат, как построить УСПЕХ, потому что технически это не проходит через неволю триггер

СТЕК TRACE С ИСПОЛЬЗОВАНИЕМ TXT КОТОРЫЕ ИМЕЮТ TRIGGER Doesnt

[DEBUG] Sending changelist: 
Change: new 

Description: 
    Auto increment pom version during build process. Reviewed by: RE 

Files: 
    //depot/phoenix/auto-increment-pom/pom.txt 

[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 2.998s 
[INFO] Finished at: Thu Oct 30 14:55:04 PDT 2014 
[INFO] Final Memory: 18M/216M 
[INFO] ------------------------------------------------------------------------ 

ВОПРОС:

  1. Кто-нибудь испытал такое поведение с maven и как вы обходились?
  2. ли вы знать, если это возможно, чтобы отключить неволей триггер для конкретного файла, так что неволей даже не пройти через триггер
+0

Определение того, какие файлы активируют, какие триггеры контролируются полем «путь» в таблице триггеров (см. «триггеры помощи p4»). –

+0

спасибо .. это правда, однако триггер ищет любой шаблон xml, и я не знаю, как можно исключить только pom.xml.Я мог бы сделать это в скрипте триггера, но я не хочу, чтобы perforce даже доходил до выполнения сценария запуска, если это pom.xml 'checkstyle_xml change-content //depot/project/....xml"/p4 /triggers/checkstyle-trigger.pl% user%% changelist%/p4 "' – user6930

+0

Я отправил ответ с более подробной информацией о том, как исключить один файл из определенного триггера. –

ответ

1

Вы можете использовать исключающий синтаксис (ведущий дефис в поле Пути) в таблице триггеров, чтобы указать, что определенные файлы или шаблоны не запускают триггер.

Существует пример этого в документации «p4 Триггеры»: http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_triggers.html

Будьте осторожны с этим синтаксисом, это немного привередливый:

  1. Триггеры сгруппированы на основе имени триггера и типа
  2. порядок строк в таблице триггера для группы значение

Существует также статью базы знаний для этого что более подробно: http://answers.perforce.com/articles/KB_Article/Excluded-Trigger-Paths-Not-Being-Recognized

+0

Я попробовал решение, упомянутое во втором блоке, однако он, похоже, ошибочен из KNB. Третий блок работает как шарм. Большое спасибо за то, что помогли двигаться в правильном направлении. – user6930