maven打包,在manifest.mf里面加入时间戳

我不得不再次痛恨一番maven,用起来真是恶心:

今天遇到这么个问题,我想在war包里面的manifest.mf文件中加入时间戳。怎么写pom?

首先maven文档说,可以用那个maven-antrun-plugin来加入时间啊,照着它说的做:

http://maven.apache.org/plugin-developers/cookbook/add-build-time-to-manifest.html (不推荐)

打jar包倒没问题,可我要打war包就不行了。

然后看到这么个插件buildnumber-maven-plugin:

需要添加配置:

<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>buildnumber-maven-plugin</artifactId>
				<executions>
					<execution>
						<phase>validate</phase>
						<goals>
							<goal>create</goal>
						</goals>
					</execution>
				</executions>
				<configuration>
					<format>{0,date,yyyyMMdd-HHmmss}</format>
					<items>
						<item>timestamp</item>
					</items>
					<buildNumberPropertyName>
						current.timestamp
					</buildNumberPropertyName>
				</configuration>
			</plugin>

然后在maven-war-plugin中添加入口:

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <configuration> <warName>xxxxx</warName> <archive> <manifestEntries> <Project-name>${project.name}</Project-name> <Project-version> ${project.version} </Project-version> <Build-Time> ${current.timestamp} </Build-Time> </manifestEntries> </archive>

……

 

这样写还没完,直接打包会报错误:

 

java.lang.NullPointerException: The scm url cannot be null.     at org.apache.maven.scm.manager.AbstractScmManager.makeScmRepository(AbstractScmManager.java:183)

 

查了查,说是要加个没用的scm节点才行:

 

<scm>
		<connection>scm:svn:http://127.0.0.1/none</connection>
		<developerConnection>
			scm:svn:https://127.0.0.1/none
		</developerConnection>
		<tag>HEAD</tag>
		<url>http://127.0.0.1/isaynone</url>
	</scm>

这里面的url都是无用,瞎写都可以。直接复制过去也可。

这样就可以加入时间戳到manifest.mf里面去了。

 

不过我真服了这样的解决办法。maven有多恶心就多恶心了!
 

 

----------

这里补充一下jar包的情形:

不要使用官方http://maven.apache.org/plugin-developers/cookbook/add-build-time-to-manifest.html

这个办法容易遇到m2e的老问题 http://ljhzzyx.blog.163.com/blog/static/383803122013440345857/

所以还是推荐使用buildnumber-maven-plugin的方式,大部分一样针对maven-jar-plugin修改

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-jar-plugin</artifactId>

<version>2.2</version>

<configuration>

<archive>

<manifestEntries>

<Copyright>kzg 2013</Copyright>

<Project-name>${project.name}</Project-name>

<Project-version>${project.version}</Project-version>

<Build-Time>${current.timestamp}</Build-Time>

</manifestEntries>

</archive>

<skip>true</skip>

</configuration>

 

</plugin>


 

还有个方法:

http://m.oschina.net/blog/95181


Total views.

© 2013 - 2024. All rights reserved.

Powered by Hydejack v6.6.1