目录
实现功能
- 获取当前工程主目录下svn版本号
- 获取当前工程指定目录的svn版本号
在使用这个插件的过程中,获取当前svn版本号估计大家都知道。但是获取指定目录下的版本号就不是谁都知道啦。
首先看下配置结构
<configuration>
<entries>
<entry>
<path>${project.basedir}</path>
<prefix>${project.artifactId}</prefix>
<depth>infinity</depth>
<reportUnversioned>true</reportUnversioned>
<reportIgnored>false</reportIgnored>
<reportOutOfDate>false</reportOutOfDate>
</entry>
</entries>
</configuration>
可以看到entries下面嵌套了一个entry。每个entry又有一个prefix的定义。也就是说他支持去获取多个目录的svn信息的。你只要配置多个entry就行了。不同的entry中的变量通过你定义的不同的prefix去拿到就行。例子如下定义了两个entry
<plugin>
<groupId>com.google.code.maven-svn-revision-number-plugin</groupId>
<artifactId>svn-revision-number-maven-plugin</artifactId>
<version>1.13</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>revision</goal>
</goals>
</execution>
</executions>
<configuration>
<entries>
<entry>
<prefix>svn1</prefix>
</entry>
<entry>
<path>${project.basedir}/src/main/resources/META-INF/resources/demo</path>
<prefix>svn2</prefix>
</entry>
</entries>
</configuration>
<dependencies>
<dependency>
<groupId>org.tmatesoft.svnkit</groupId>
<artifactId>svnkit</artifactId>
<version>1.9.3</version>
</dependency>
</dependencies>
</plugin>
如下代码,成功拿到了demo路径下的svn版本号。并且写入了manifest中。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>${maven-jar-plugin-version}</version>
<configuration>
<archive>
<compress>true</compress>
<addMavenDescriptor>false</addMavenDescriptor>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
</manifest>
<manifestEntries>
<SVN-Revision>${svn1.revision}</SVN-Revision>
<SVN-CommittedRevision>${svn.committedRevision}</SVN-CommittedRevision>
<Build-Time>${buildTime}</Build-Time>
<Demo-SVN-CommittedRevision>${svn2.committedRevision}</Demo-SVN-CommittedRevision>
</manifestEntries>
</archive>
</configuration>
</plugin>
可能还有人会有疑问 我的${svn1.XXXXX}到底能获取到哪些东西?
以下就是能捕获的所有信息了。
repository = ${prefix.repository}
path = ${prefix.path}
revision = ${prefix.revision}
mixedRevisions = ${prefix.mixedRevisions}
committedRevision = ${prefix.committedRevision}
committedDate = ${prefix.committedDate}
status = ${prefix.status}
specialStatus = ${prefix.specialStatus}
这个工具我没找到在线文档。但是源码中有说明 我直接传上来吧。更多的功能直接看英文文档最好。比什么博客都详细,见我发布的资源。