2013-02-07 70 views
1

我寫了一個自定義maven插件,使用svnkit來檢測是否有本地更改沒有提交或如果您的工作副本與svn回購不同步,然後失敗mvn部署。自定義Maven插件,將無法安裝或部署

下面是執行代碼:

public void execute() throws MojoExecutionException, MojoFailureException { 

    PluginDescriptor pd = (PluginDescriptor)getPluginContext().get("pluginDescriptor"); 
    MavenProject p = (MavenProject)getPluginContext().get("project"); 

    //init log 
    Log log = getLog(); 
    SVNHelper.initLogger(log); 

    //Throws MojoFailureException if there are uncommitted changes 
    checkForUncomittedChanges(p.getBasedir(), log); 

    //Throws MojoFailureException if the working copy is not up to date 
    checkForWorkingCopyUpToDate(p.getBasedir(), log); 
} 

然後在pom.xml其中使用的插件,我把它綁定到部署

插件的調用是否正確,但後構建失敗部署已經發生。我可以移動插件在安裝階段執行,但我不希望在這種情況下安裝顯示構建失敗,我只想部署停止。

有什麼我失蹤了。你

+0

你知道maven-release-plugin嗎?準備目標? – khmarbaise

+0

我希望工程師能夠將SNAPSHOTS部署到回購站,但不能部署具有未提交代碼或過時代碼的SNAPSHOTS。發佈插件如何幫助解決這個問題? – Deane

+0

使用像jenkins這樣的CI工具在每次提交後部署SNAPSHOT。這是最簡單的解決方案。 – khmarbaise

回答

0

兩個建議:

  1. (我們做事的方式)使用詹金斯建立後SVN檢查和配置的Nexus安全讓部署從詹金斯用戶發生。這種方法不需要自定義插件(可以由用戶從pom.xml中刪除)。

  2. 修改默認生命週期。

我猜你可能已經做了只是配置與@階段Mojo使其觸發在部署階段。確保您的部署階段的兩個目標(部署:deploy:& your:goal)在相同的地方定義,然後執行順序將確定。

要做到這一點,您需要定義自定義生命週期(http://www.sonatype.com/books/mvnref-book/reference/writing-plugins-sect-plugins-lifecycle.html)並指定其下的兩個目標。從來沒有這樣做過,我不知道你是否可以簡單地重寫默認/ jar生命週期,或者你是否需要創建自己的新包裝類型。

如果有疑問,請認真考慮建議1.