我怎么能在Maven中做一个git pull?

时间:2011-06-15 14:28:39

标签: git maven pom.xml maven-scm

我是maven和git的新手,想在设置项目时获得一些帮助。

在链接到maven阶段期间,有没有办法在pom中定义从git推/拉的目标?例如,我可以在maven安装阶段从git中提取吗?

如果是,那该怎么办呢?我会很感激任何代码示例。

3 个答案:

答案 0 :(得分:11)

好主意与否,这里是你如何使用Maven进行结账( pull 克隆来自Github)。让你的pom.xml看起来像这样:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

<modelVersion>4.0.0</modelVersion>
<groupId>br.com.javamagazine</groupId>
<artifactId>engesoft</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>engesoft Maven Webapp</name>
<url>http://maven.apache.org</url>

<scm>
    <connection>scm:git:git://github.com/vitorsouza/EngeSoft.git</connection>
    <developerConnection>scm:git:https://vitorsouza@github.com/vitorsouza/EngeSoft.git</developerConnection>
    <url>https://github.com/vitorsouza/EngeSoft</url>
</scm>
</project>

然后使用mvn scm:checkout。当我运行它时,它将代码拉到文件夹target/engesoft。可能有一种方法可以将其配置为将其放置在其他位置。请查看以下页面:

答案 1 :(得分:2)

不要在Maven构建期间执行此操作,而是使用Jenkins之类的CI服务器。它将在运行maven之前执行git pull,因此构建工具可以专注于它的主要目的:构建源代码。

这也使得开发更简单,因为只有在你需要时才会发生拉动。如果你一直在拉,另一个开发人员可以改变一些东西,你会得到你不期望的错误。

答案 2 :(得分:2)

scm:结帐目标 Vitor指的是克隆,而不是拉(Git的巨大差异)。

我不得不使用exec的目标去做你正在描述的事情。每次构建时我也不想做整个克隆。相反,我使用 git reset --hard 然后 pull -f origin Release:Release (通过exec)。

如果我找到更好的方法(并且还有一个),我会在这里发布。