2013-01-24 64 views
3

我們使用在SVN中管理的maven repo。我建立了一個罐子newUtil-1.0.jar,我需要將它部署到遠程倉庫。我正在使用以下命令,這會導致生成失敗。maven將jar部署到svn並提交消息

mvn deploy:deploy-file -Dfile=/tmp/newUtil-1.0.jar -DgroupId=com.tareque.utils -DartifactId=newUtil -Dversion=1.0 -Dpackaging=jar -DrepositoryId=myrepo -Durl=https://<my-repo-url>

檢查在服務器側對svn日誌示出了此消息

[週五年01月18 11時35分47秒2013] [錯誤] [客戶端169.124.140.200 ]使用輸出:pre-commit hook(退出代碼1)阻止提交:\ n不允許使用空註釋。

由此看來,提交與空消息/評論被阻止。

那麼,如何將提交消息的註釋傳遞給上述maven deploy命令?

+1

爲什麼不使用真正的資源庫管理器而不是SVN。 SVN作爲Repo管理器的存儲庫有什麼優勢? – khmarbaise

+1

@khmarbaise我是團隊的新開發人員。這已經使用了多年。所以,改變這是另一項重大任務。希望你得到,這是真正的開發者世界,而不是開發人員獲得完整訪問權限的理想環境;) – mtk

+0

部署jar的常用方法是使用maven-release-plugin,它將在SVN等中標記,當然會將工件部署到適當的存儲庫。但你可以嘗試使用-Dmessage =「WhatEver」,但我不確定這是否有效。 – khmarbaise

回答

2

請勿使用deploy,請使用maven-release-plugin。建立在這種情況下,提交信息很簡單:

<build> 
    <plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-release-plugin</artifactId> 
     <configuration> 
     <scmCommentPrefix>re #123:</scmCommentPrefix> 
     </configuration> 
    </plugin> ...... 

你必須四處搜尋了一下不管什麼其他設置您需要使用版本的插件擺在首位(<scm><distributionManagement>的廣告代碼,開始),但一旦你有mvn release:prepare release:perform工作,這個額外的配置設置將讓你修改提交信息。

相信我,一旦您正確使用發佈插件,您將不想回到手動發佈版。

埃塔:如果你事實上是在試圖部署快照到SVN(這似乎是一種堅果,我從來沒有見過它做,但它應該是可能的),你要調查using wagon-scm這樣你<distributionManagement>部分將使用scm:svn:https://your-repo-url。如果你得到它的工作,請讓我們知道!

+0

但是,這將在每次提交時都生成一個標記。 – carlspring

+1

嗯,重點是你*釋放*,因此插件的名稱,你肯定應該標記每個版本。如果OP不是「削減版本」,他們應該使用SNAPSHOT版本ID,答案會改變。 – Coderer

+0

是的,你確實是對的。我相信mtk並不知道SNAPSHOT和固定版本如何在Maven中工作。 – carlspring