【问题标题】:How can I do a git pull in Maven?如何在 Maven 中执行 git pull?
【发布时间】:2011-09-15 14:30:01
【问题描述】:

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

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

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

【问题讨论】:

  • 在构建过程中为什么要推或拉?听起来真是个坏主意。
  • 这不是真正的构建。该项目包含自动化测试。而我们的测试框架的设置方式,我们需要不时拉取最新的框架代码来运行测试。
  • 假设拉动会快进(不需要合并解析),是不是只运行“git pull repoName”然后“mvn arguments”足够简单?如果不能快进,maven应该怎么处理?

标签: git maven pom.xml maven-scm


【解决方案1】:

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

【讨论】:

【解决方案2】:

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

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

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

【讨论】:

  • 感谢您的澄清。我还是个 git 新手。
【解决方案3】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-23
    • 2015-07-08
    • 2017-01-02
    • 2012-10-16
    • 1970-01-01
    • 2011-05-31
    • 2011-07-27
    • 2016-01-07
    相关资源
    最近更新 更多