11

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

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

如果是,如何实现?我将不胜感激任何代码示例。

4

3 回答 3

11

好主意与否,这是结帐的方法(使用 Maven 从 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中。可能有一种方法可以将其配置为将其放置在其他地方。查看以下页面:

于 2011-06-28T12:23:57.383 回答
4

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

这也使您的开发更加简单,因为 pull 只会在您需要它们时发生。如果你一直拉,另一个开发者可以改变一些东西,你会得到你没想到的错误。

于 2011-06-28T12:27:03.667 回答
2

Vitor 所指的scm:checkout 目标是克隆,而不是拉取(Git 中的巨大差异)。

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

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

于 2012-04-13T20:23:22.717 回答