我是 maven 和 git 的新手,想在设置项目时获得一些帮助。
有没有办法在 pom 中定义一个目标,以便在链接到 maven 阶段期间从 git 推/拉?例如,我可以在 Maven 安装阶段从 git 中提取吗?
如果是,如何实现?我将不胜感激任何代码示例。
好主意与否,这是结帐的方法(拉使用 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
中。可能有一种方法可以将其配置为将其放置在其他地方。查看以下页面:
不要在 Maven 构建期间这样做,而是使用像Jenkins这样的 CI 服务器。它将git pull
在运行 maven 之前完成,因此构建工具可以专注于它的主要目的:构建源代码。
这也使您的开发更加简单,因为 pull 只会在您需要它们时发生。如果你一直拉,另一个开发者可以改变一些东西,你会得到你没想到的错误。
Vitor 所指的scm:checkout 目标是克隆,而不是拉取(Git 中的巨大差异)。
我不得不使用 exec 目标来做你所描述的事情。我也不想在每次构建时都进行整个克隆。相反,我使用git reset --hard然后pull -f origin Release:Release(通过 exec)。
如果我找到更好的方法(并且必须有一个),我会在这里发布。