Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java pom文件中未读取自定义(自定义)属性_Java_Maven_Pom.xml_Exec Maven Plugin_Maven Jar Plugin - Fatal编程技术网

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