基于Maven的项目,发布时需要打包,如tar.gz。web项目打成war格式包。每次打包时希望自己加上时间戳,假如我的项目名是myproject,默认打包后名为myproject.war。而我希望的名字为myproject-1.0.0-20160217。方便以后对包进行查找与管理,如何实现这种效果呢?
1.使用maven自带的属性
设置时间戳格式:在pom.xml文件中加入以下配置
<properties>
<maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format>
</properties>
在打包plugin中引用该属性
<finalName>
${project.artifactId}-${project.version}_${maven.build.timestamp}
</finalName>
Maven自带时间戳使用${maven.build.timestamp},但是时区是UTC。
如果要使用GMT+8,就需要插件提供支持,以下两个插件可以实现。
2.使用buildnubmer-maven-plugin
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<version>1.4</version>
<configuration>
<timestampFormat>yyyyMMdd</timestampFormat>
</configuration>
<executions>
<execution>
<goals>
<goal>create-timestamp</goal>
</goals>
</execution>
</executions>
<inherited>false</inherited>
</plugin>
默认属性是timestamp,在打包plugin中引用该属性
<finalName>
${project.artifactId}-${project.version}_${timestamp}
</finalName>
3.使用build-helper-maven-plugin
<build>
<finalName>ProjectName-${current.time}</finalName>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.9.1</version>
<executions>
<execution>
<id>timestamp-property</id>
<goals>
<goal>timestamp-property</goal>
</goals>
</execution>
</executions>
<configuration>
<name>current.time</name>
<pattern>yyyyMMdd-HHmmss</pattern>
<timeZone>GMT+8</timeZone>
</configuration>
</plugin>
</plugins>
</build>
将以上的几种方式配置分别加入到自己的pom.xml文件中,打个包试试,是不是自己加上了时间戳 -
mvn打包时添加日期参数maven打包时想添加日期参数,如:将"xxx.jar"打包为"xxx-yyyyMMdd.jar"这样的格式。如何实现?自Maven 2.1.0-M1版本之后,通过设置属性值: maven.build.timestamp.format指定具体的日期格式,如:<project> ... <properties> <maven.build.timestamp.format>yyyy-MM-dd'T'HH:mm:ss'Z'</
<version>5.0.${build.time}B</version>
<properties>
<maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format>
</properties>
对资源文件开启 filtering 功能,资源文件中的 POM 变量在打包过程中会被自动替
【起因】说一下要实现的效果
女朋友最近接到手里的任务就是要将Maven打的包设置成xxx-2021209252204.jar,因为是springboot项目,网上的例子其实有很多。
开始时使用了maven自带的时间插件,直接在properties标签中加入时间格式的设置,如下:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<!--指定时间格式-->
<maven.build.timestamp.format>yyyy-MM-dd HH:mm:ss</maven.build.timestamp.format>
<!--maven.build.timestamp保存了maven编译时间戳--&
<properties>
<maven.build.timestamp.format>yyyy-MM-dd HH:mm:ss</maven.build.timestamp.format>
</prop...
团队其他成员(例如:小明)维护了一个公用的 jar ,例如:com.jar ,在他的 pom 中 com 的 version 带有 SNAPSHOT,例如:<version>0.0.1-SNAPSHOT</version>;
然后当别人使用小明维护的 com.jar 时,dependency 的version 和小明写的一样<version>0.0.1-SNAPSHOT</vers
Maven 是一个非常常用的 Java 项目构建工具,使用 Maven 打包 jar 可以方便地将项目打包成一个可执行的 Jar 包,使得项目的发布、部署等工作变得轻松快捷。下面我将详细介绍如何使用 Maven 打包 jar。
首先,需要确保电脑上已经安装了 Maven。在安装好 Maven 之后,可以使用 Maven 的命令行工具进行操作。进入到要打包的项目的根目录下,执行以下命令:
```bash
mvn clean package
其中 `clean` 表示删除之前编译的类和 jar 文件,`package` 表示将项目打包成一个 jar 文件。
在执行命令之后,Maven 会自动编译项目代码,将编译好的类文件和依赖的库文件打包成一个 jar 文件,并将其放置在项目的 `target` 文件夹下。
在这个过程中,如果项目依赖的库没有被安装到本地仓库或中央仓库中,Maven 会自动从中央仓库或其他配置好的仓库下载并安装这些依赖库。
如果需要指定 jar 文件的名称和路径,可以在 `pom.xml` 文件中进行配置。在 `build` 标签中添加以下代码:
```xml
<finalName>${project.artifactId}-${project.version}</finalName>
<outputDirectory>./target</outputDirectory>
其中 `finalName` 指定了 jar 文件的名称,`${project.artifactId}` 表示项目的名称,`${project.version}` 表示项目的版本号;`outputDirectory` 指定了 jar 文件输出的目录。
除了使用命令行打包 jar,也可以在 Maven 的开发工具中(如 Eclipse、IntelliJ IDEA 等)直接使用打包插件进行操作。
总之,使用 Maven 打包 jar 是一个非常便捷的操作,可以方便地将项目打包成一个可执行的 Jar 包,并将其部署到不同的环境中。