我是maven和git的新手,想在设置项目时获得一些帮助。
在链接到maven阶段期间,有没有办法在pom中定义从git推/拉的目标?例如,我可以在maven安装阶段从git中提取吗?
如果是,那该怎么办呢?我会很感激任何代码示例。
答案 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)。
如果我找到更好的方法(并且还有一个),我会在这里发布。