Maven - 从SVN中提取代码

时间:2011-10-24 20:16:54

标签: svn maven compilation

我正在将J2ee Project从Ant迁移到Maven,
其中一项任务是从SVN存储库中提取现有源 编译它,并将其jar添加到我当前的构建中作为Jar

是否可以获取源代码并在Maven中编译它?

谢谢!

<target name="checkoutBuild" description="Pulls code from SVN into the build directory">
    <exec executable="svn">
        <arg line="co ${svn.projecturl} ${project.build.root} -r ${svn.revision} --username ${svn.username} --password ${svn.password}"/>
    </exec>
</target>

2 个答案:

答案 0 :(得分:2)

是的,与Ant类似。在预编译阶段之一中执行svn中的exec-maven-plugin命令,可能在 generate-sources 中。我会尝试这样的事情(这是一个大脑转储,可能包含小错误):

<build>
 <plugins>
  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>...</version>
    <executions>
      <execution>
        <id>svn</id>
        <goals>
          <goal>exec</goal>
        </goals>
        <phase>generate-sources</phase>
      </execution>
    </executions>
    <configuration>
      <executable>svn</executable>
      <arguments>
        <argument>co</argument>
        <argument>${svn.projecturl}</argument>
        <argument>${project.build.root}</argument>
        ...
      </arguments>
    <configuration>
  </plugin>
 </plugins>
</build>

修改

Prunge的回答让我想到 - 你想真正实现什么?如果项目始终是构建的一部分,那么更好的方法是“对其进行”“(为其编写POM)并将其作为模块/依赖项包含在内。

如果SVN签出是一次性操作,可能最好保持原样,使用mvn install:install-file将jar添加到存储库(分配组ID和工件ID),并使用它作为依赖?

答案 1 :(得分:1)

你可能可以,但这不是“Maven Way”的做法。

查看Maven Release Plugin文档。

您通常做的是:

  • 定义source control repository in your POM
  • 执行release:prepare验证一切正常(没有发布的SNAPSHOT依赖项等)
  • 做一个release:peform。您可以对干净的空目录执行此操作,甚至可以在未检出项目的其他计算机上执行此操作(release:perform可以通过在命令行上指定SCM URI从源代码管理中检出源代码)。