maven scm не слушает выполнение триггерного выхода
Привет Maven / Perforce Experts,
Я пытаюсь реализовать автоматическое управление версиями артефактов maven для проекта, который использует Perforce в качестве VCS. Это заставило меня выбрать maven-scm-plugin и maven-release-plugin для достижения моей цели. Мы используем триггеры в Perforce, которые проверяют наличие нарушений в содержимом XML для каждого коммита.
checkstyle_xml change-content //depot/project/....xml " /p4/triggers/checkstyle-trigger.pl %user% %changelist% /p4"
К сожалению, когда я запускаю команду "mvn -X -e -B scm: редактировать выпуск: update-version scm: checkin" для редактирования файла, обновления версии и отправки в исполнение, maven НЕ учитывает результат триггера выполнения. и не удается построить. Тем не менее, как вы видите, изменение в конечном итоге передается на исполнение.
STACK 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
Я отправил файл локально, чтобы убедиться, что триггер выполнения не выплескивает код состояния ошибки, и на самом деле он также возвращает УСПЕХ. Я не уверен, почему 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
Я протестировал сценарий с txt-файлом, в котором не включен триггер выполнения, и maven возвращает результат сборки как SUCCESS, потому что технически он не проходит через триггер выполнения.
STACK TRACE С ИСПОЛЬЗОВАНИЕМ TXT, КОТОРЫЕ НЕ ИМЕЮТ TRIGGER
[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] ------------------------------------------------------------------------
ВОПРОС:
- Кто-нибудь сталкивался с таким поведением с Maven и как вы обошли это?
- Знаете ли вы, можно ли отключить триггер выполнения для определенного файла, чтобы выполнение не проходило через триггер?
1 ответ
Вы можете использовать исключительный синтаксис (начальный дефис в поле пути) в своей таблице триггеров, чтобы указать, что определенные файлы или шаблоны не должны запускать триггер.
Пример этого есть в документации по "триггерам p4": http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_triggers.html
Будьте осторожны с этим синтаксисом, он немного привередлив:
- Триггеры сгруппированы на основе имени и типа триггера.
- Порядок строк в таблице триггеров для группы имеет значение
Существует также статья базы знаний для этой функции, которая более подробно описана: http://answers.perforce.com/articles/KB_Article/Excluded-Trigger-Paths-Not-Being-Recognized