2012-07-02 162 views
5

任何人都可以告訴我如何使用Maven從SVN進行結帳和進一步更新嗎?我閱讀maven.apache.org上的文檔,但似乎我太傻了,因爲我無法理解如何使用scm:checkout和scm:update,而無需在命令行中傳遞參數。我的意思是,當我只需運行:Maven SVN結帳

mvn scm:checkout (or scm:update) clean install 

行家檢出源/目標/結賬時,則刪除它,當然它沒有任何編譯因此它是空罐子。所以我得寫這樣的東西:

mvn scm:checkout -DconnectionUrl=scm:svn:http://svn.my.dev/scm/repo/trunk/myProject -DcheckoutDirectory=src clean install 

但我不想!我如何在pom.xml中設置這些參數?我怎樣才能將當前目錄設置爲checkoutDirectory? (也許它不應該是,如果將其設置在pom.xml的,因爲我可以將其設置爲$ {} project.basedir一個問題,但誰知道) 我pom.xml中包括這些行:

... 
    <scm> 
    <connection>scm:svn:http://svn.my.dev/scm/repo/trunk/myProject</connection> 
    <developerConnection>scm:svn:http://svn.my.dev/scm/repo/trunk/myProject</developerConnection> 
    </scm> 
... 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-scm-plugin</artifactId> 
     <version>1.7</version> 
     <configuration> 
     <username>username</username> 
      <password>password</password> 
     </configuration> 
     </plugin> 
... 

順便說一句,連接和developerConnection有什麼區別。 Maven文檔只說明developerConnection是......「開發人員的SCM連接URL」。這對我來說非常令人驚訝,因爲我認爲這是松鼠的一些連接,或者可能是兔子。

回答

4

您可以將checkoutDirectory選項直接添加到maven-scm插件的配置中。一旦文件被簽出,您可以使用scm:updateworkingDirectory選項(可以在插件配置中配置以及)

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-scm-plugin</artifactId> 
    <version>1.7</version> 
    <configuration> 
    <username>username</username> 
    <password>password</password> 
    <checkoutDirectory>${project.basedir}/src</checkoutDirectory> 
    <workingDirectory>${project.basedir}/src</workingDirectory> 
    </configuration> 
</plugin> 
+0

是啊,謝謝,那工作。但我仍然無法設置當前目錄爲checkoutDirectory。如果我爲某種原因設置了 $ {project.basedir}(和for workDirectory相同),maven只是清理整個目錄,包括pom.xml,並退出,說它不能刪除目錄本身。這當然不是什麼大問題,我可以使用提到的「src」子目錄作爲結帳和工作目錄,但對我來說,使用當前目錄更好。可能嗎? – mykola

+0

不,我認爲這是不可能的,因爲Maven在結賬前總是刪除結帳目錄。 我不知道你的編譯設置是如何工作的,但也許你可以將你的POM文件與你的src /目錄一起提交(正如大多數人所做的那樣)。如果在你的環境中這是可能的,你可以運行'mvn scm:checkout -DconnectionUrl = scm:svn:http:// my-svn-url -DcheckoutDirectory =「/ my/checkout/directory」。你也可以把所有的-D選項放在一個「bootstrap」POM中,然後運行'mvn scm:checkout'或'mvn scm:update' –

+0

嗯,我創建了一個shell腳本,它檢出/更新項目,然後運行maven build。畢竟,Maven svn插件無論如何都需要安裝svn,並且svn shell命令非常簡單,所以我在使用maven svn插件時看不到多少意義。 – mykola