我在Git中使用Maven 3.0.3。我使用集成工具(Bamboo)将Git中的代码分支签出到目录中。然后该工具使用Maven运行标准构建生命周期(编译,测试,部署)。我想要的是,如果我的Maven部署任务成功,我想标记我在Git中检出的代码版本。我怎么能从Maven那里做到这一点?您可以提供的任何样本配置都非常感谢。
答案 0 :(得分:6)
使用maven scm plugin。请参阅tag functionality in advanced features,这应该是相关的。
现在,git支持不是开箱即用的,因此您需要依赖maven-scm-provider-gitexe。另外,要克服plexus exception issue,您还需要为更高版本的plexus添加依赖项。
这对我有用:
<project>
<scm>
<connection>scm:git:https://username@github.com/my-project.git</connection>
<developerConnection>scm:git:https://username@github.com/my-project.git</developerConnection>
</scm>
<!-- snip -->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-scm-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
<version>2.1</version>
</dependency>
<dependency>
<groupId>org.apache.maven.scm</groupId>
<artifactId>maven-scm-provider-gitexe</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
<version>1.0</version>
<configuration>
<tag>test</tag>
<connectionType>connection</connectionType>
</configuration>
<executions>
<execution>
<id>tag</id>
<phase>deploy</phase>
<goals>
<goal>tag</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<!-- snip -->
</project>
答案 1 :(得分:2)
maven-release-plugin可以为您完成此操作 - 请参阅此处的示例:http://maven.apache.org/plugins/maven-release-plugin/examples/prepare-release.html
答案 2 :(得分:1)
maven-release-plugin只需要声明scm:
<scm>
<url>https://github.com/username/repoName</url>
<connection>scm:git:git://github.com/username/repoName.git</connection>
<developerConnection>scm:git:git@github.com:username/repoName.git</developerConnection>
<tag>HEAD</tag>
</scm>
生成git ssh密钥
https://help.github.com/articles/generating-ssh-keys/
并运行 mvn release:prepare
答案 3 :(得分:-1)
我推荐我所属的小型开源项目-it称为Quicktag,并与几个VCS使用 - https://code.google.com/p/quicktag-maven-plugin。添加插件,它将生成包含构建信息的静态字段的Java类。