Java pom文件中未读取自定义(自定义)属性
我们想在我们的Java pom文件中未读取自定义(自定义)属性,java,maven,pom.xml,exec-maven-plugin,maven-jar-plugin,Java,Maven,Pom.xml,Exec Maven Plugin,Maven Jar Plugin,我们想在我们的MANIFEST.MF中插入当前的git提交哈希。不幸的是,我们不允许使用maven-git-commit-id-plugin,因此我们采取了以下方法: 创建一个读取提交散列并在系统属性中设置它的类 使用execmaven插件在打包时运行这个类 在修改maven jar插件中的MANIFEST.MF时读取属性 然而,这并不像预期的那样有效。因为散列出现的标记在末尾是空的。它甚至没有我们在开始时设置的默认值 插件的执行顺序是正确的 我们可以访问其他系统属性 有关班级: pub
MANIFEST.MF
中插入当前的git提交哈希。不幸的是,我们不允许使用maven-git-commit-id-plugin
,因此我们采取了以下方法:
- 创建一个读取提交散列并在系统属性中设置它的类
- 使用
execmaven插件在打包时运行这个类
- 在修改
maven jar插件中的
时读取属性MANIFEST.MF
- 插件的执行顺序是正确的
- 我们可以访问其他系统属性
public class GetGitHash {
public static void main(String... args) {
String gitHash = "ZUFALL";
System.out.println("1. Git Hash: " + System.getProperty("githash"));
try{
ProcessBuilder pb = new ProcessBuilder("git", "rev-parse", "--short", "HEAD");
pb.redirectInput(ProcessBuilder.Redirect.INHERIT);
Process p = pb.start();
gitHash = new BufferedReader(new InputStreamReader(p.getInputStream()))
.lines().collect(Collectors.joining(" "));
}
catch (Exception e){
e.printStackTrace();
}
finally {
System.setProperty("githash", gitHash);
}
System.out.println("2. Git Hash: " + System.getProperty("githash"));
}
}
pom文件中的maven exec
配置:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.6.0</version>
<executions>
<execution>
<id>git-hash</id>
<configuration>
<mainClass>PACKAGE.GetGitHash</mainClass>
<systemProperties>
<systemProperty>
<key>githash</key>
<value>ZUFALL</value>
</systemProperty>
</systemProperties>
</configuration>
<phase>package</phase>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
</plugin>
但是,清单
如下所示:
Manifest-Version: 1.0
Created-By: Apache Maven 3.3.9
Built-By: USER
Build-Jdk: 11
Build-ID:
Build-Timestamp: 2019-07-19T09:49:36Z
Library-Version: 0.9.2
使用buildnumber maven插件或其他现有插件任何其他方法都很容易出错,花费的精力比实际值多…@khmarbaise在项目页面中不清楚他们使用的是哪个许可证,并且由于企业政策,我们不允许使用GPL,但是Apache是可以的。尽管如此,我认为maven git提交id插件的想法是提供buildnumber maven插件没有提供的git功能。我可能错了,但是EverBuildNumber maven插件是麻省理工学院授权的,这是不相关的,因为只有将成为您应用程序一部分的东西是一个问题。这是GNU Lesser General Public License v3.0,这意味着您不允许创建新插件并出售它。但是您可以使用它(但我不是律师)…许可证可以在存储库中查看(许可证文件)…但是代码的许可证与使用插件不同…许可证可以在这里查看:在这里:我将在周一查看此特定任务。然而,我发现奇怪的是,pom中的属性并没有像广告中那样工作。要么是我做错了什么,要么是有bug。我认为第一种选择更可能。使用buildnumber maven插件或其他现有插件任何其他方法都很容易出错,花费的精力比实际值多…@khmarbaise在项目页面中不清楚他们使用的是哪种许可证,并且由于企业政策,我们不允许使用GPL,但是Apache是可以的。尽管如此,我认为maven git提交id插件的想法是提供buildnumber maven插件没有提供的git功能。我可能错了,但是EverBuildNumber maven插件是麻省理工学院授权的,这是不相关的,因为只有将成为您应用程序一部分的东西是一个问题。这是GNU Lesser General Public License v3.0,这意味着您不允许创建新插件并出售它。但是您可以使用它(但我不是律师)…许可证可以在存储库中查看(许可证文件)…但是代码的许可证与使用插件不同…许可证可以在这里查看:在这里:我将在周一查看此特定任务。然而,我发现奇怪的是,pom中的属性并没有像广告中那样工作。要么是我做错了什么,要么是有bug。我认为第一种选择更有可能。
[INFO] --- exec-maven-plugin:1.6.0:java (git-hash) @ PROJECT ---
1. Git Hash: ZUFALL
2. Git Hash: 0003dfa9
Manifest-Version: 1.0
Created-By: Apache Maven 3.3.9
Built-By: USER
Build-Jdk: 11
Build-ID:
Build-Timestamp: 2019-07-19T09:49:36Z
Library-Version: 0.9.2