有人能告诉我如何使用Maven从SVN进行检出和更新吗?我读了maven.apache.org上的文档,但似乎我太蠢了,因为我不知道如何在命令行中使用scm:checkout和scm:update而不传递参数。我的意思是当我只运行:
mvn scm:checkout (or scm:update) clean install
Maven将源代码检出到/target/checkout,然后删除它,因此没有东西可编译,最终生成空的JAR包。因此,我需要编写类似以下代码的内容:
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>
...
顺便问一下,连接和开发者连接有什么区别。Maven文档只说了开发者连接是“开发者的SCM连接URL”。这对我来说非常惊讶,因为我认为这是某种适用于松鼠或兔子的连接。
mvn scm:checkout -DconnectionUrl=scm:svn:http://my-svn-url -DcheckoutDirectory="/my/checkout/directory"
。你也可以把所有的-D选项放在一个“引导”POM中,然后只运行mvn scm:checkout
或mvn scm:update
。 - Stefan Ferstl