Maven的配置:
<plugins>
<plugin>
<groupId>pl.project13.maven</groupId>
<artifactId>git-commit-id-plugin</artifactId>
<version>4.0.0</version>
<executions>
<execution>
<goals>
<goal>revision</goal>
</goals>
</execution>
</executions>
<configuration>
<verbose>true</verbose>
<dateFormat>yyyy-MM-dd HH:mm:ssZ</dateFormat>
<generateGitPropertiesFile>true</generateGitPropertiesFile>
</configuration>
</plugin>
</plugins>
打包后会在jar包生成git.properties文件
随后可以通过代码获取提交hash,
import java.io.IOException;import java.io.InputStream;
import java.util.Properties;
public class Main {
public static void main(String[] args) {
// 读取git.properties文件
try (InputStream inputStream = Main.class.getClassLoader().getResourceAsStream("git.properties")) {
Properties properties = new Properties();
properties.load(inputStream);
// 获取commit SHA
String commitSHA = properties.getProperty("git.commit.id.abbrev");
System.out.println("Commit SHA: " + commitSHA);
// 在这里进行进一步的操作,比如将commit SHA写入其他文件
} catch (IOException e) {
e.printStackTrace();
}
}
}
前端配置如下:
要将Git提交的commit SHA打入Vue打包文件中,你可以使用Webpack插件来自动化这个过程。下面是一种可能的解决方案:
- 确保你的Vue项目已经连接到Git仓库,并且安装了Webpack作为构建工具。
- 安装
git-revision-webpack-plugin插件,它可以帮助你在打包过程中获取Git提交的信息。可以通过运行以下命令进行安装:
Copy Codenpm install git-revision-webpack-plugin --save-dev
- 在webpack配置文件中添加插件的配置。找到或创建一个名为
webpack.config.js(或类似名称)的文件,并按照下面的示例进行配置:
javascriptCopy Codeconst GitRevisionPlugin = require('git-revision-webpack-plugin');module.exports = {
// ...其他配置
plugins: [
new GitRevisionPlugin({
commithashCommand: 'rev-parse --short HEAD' // 获取commit SHA的命令
})
]
};
确保根据实际情况设置commithashCommand选项以获取commit SHA。上述示例使用的是git rev-parse --short HEAD命令来获取缩短的commit SHA。
运行Vue项目的打包命令。根据你的项目配置和构建工具,命令可能会有所不同,但通常是
npm run build。
- 在打包期间,Webpack插件会自动将commit SHA注入到生成的打包文件中。通常情况下,它会将commit SHA作为全局变量或注入到某个模块中。
- 在Vue代码中访问commit SHA。你可以通过在Vue组件中引用该全局变量或导入包含commit SHA的模块来访问commit SHA。例如:
javascriptCopy Code// 在Vue组件中直接使用全局变量console.log(process.env.COMMIT_SHA);
// 导入包含commit SHA的模块并使用它
import commitInfo from './commitInfo';
console.log(commitInfo.commitSHA);
确保根据实际情况调整上述代码中的路径和变量名。