簡體   English   中英

Maven SCM不監聽perforce觸發輸出

[英]maven scm does not listen to perforce trigger output

您好Maven / Perforce專家,

我正在嘗試為使用Perforce作為VCS的項目實現Maven工件的自動版本控制。 那使我選擇了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:edit release:update-versions scm:checkin”以編輯文件,更新版本並提交給perforce時,maven不遵守perforce觸發器的結果並導致構建失敗。 但是,您可以看到更改最終將提交給perforce。

使用已啟用觸發器的XML進行堆棧跟蹤

[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

我在本地提交了文件,以確保perforce觸發器不會吐出故障狀態代碼,並且它實際上也返回SUCCESS。 我不確定為什么Maven不會尊重perforce觸發器。

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

我用未啟用perforce觸發器的txt文件測試了一個方案,並且maven將構建結果返回為SUCCESS,因為從技術上講,它不會通過perforce觸發器

使用沒有觸發的TXT進行堆棧跟蹤

[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. 您是否可以為特定文件禁用perforce觸發器,以使perforce甚至不會通過觸發器

您可以在觸發器表中使用排他性語法(路徑字段中的前導連字符)來指定某些文件或模式不運行觸發器。

“ 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM