ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java – 让maven执行程序并将输出存储到可以在.jar清单中使用的属性中

2019-08-29 15:04:21  阅读:296  来源: 互联网

标签:java maven pom-xml maven-3 maven-jar-plugin


我想将git describe作为maven构建的一部分执行,并使用清单中的结果输出来构建.jar包.

我知道how to do this in ant通过<exec> task输出属性到一个ant属性变量,但我对Maven的经验很少,甚至不知道在哪里看.

这可能吗?

我在一个示例pom.xml文件中找到了这个,所以adding something to the manifest看起来很简单:

<project>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.6</version>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <mainClass>my.class.here.Myclass</mainClass>
                            <classpathLayoutType>custom</classpathLayoutType>
                            <customClasspathLayout>lib/$${artifact.artifactId}-$${artifact.version}$${dashClassifier?}.$${artifact.extension}</customClasspathLayout>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

不知道如何捕获命令执行.

解决方法:

以下是建议的方法:

>使用Exec Maven Plugin启动git命令并写入属性文件(如果可能,名称=值模式)
>使用Properties Maven Plugin加载配置

然后,加载的配置可用作POM中的属性.我们基本上是动态创建构建的属性.为此(使用这些属性),必须在构建流程中尽早执行上述步骤(即验证或初始化阶段).

下面是一个流程示例,刚刚测试并完美运行(在Windows机器上):

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.sample</groupId>
    <artifactId>generation</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.1</version>
                <executions>
                    <execution>
                        <id>retrieve-config</id>
                        <phase>validate</phase>
                        <goals>
                            <goal>exec</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <executable>echo</executable>
                    <arguments>
                        <argument>jar.name=from-exec</argument>
                        <argument>></argument>
                        <argument>config.properties</argument>
                    </arguments>
                    <workingDirectory>${basedir}/src/main/resources/</workingDirectory>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>properties-maven-plugin</artifactId>
                <version>1.0-alpha-2</version>
                <executions>
                    <execution>
                        <id>read-properties</id>
                        <phase>initialize</phase>
                        <goals>
                            <goal>read-project-properties</goal>
                        </goals>
                        <configuration>
                            <files>
                                <file>${basedir}/src/main/resources/config.properties</file>
                            </files>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <finalName>${jar.name}</finalName>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

基本上,附加到验证阶段的exec插件将在构建开始时执行,写入config.properties文件(通过echo命令)内容jar.name = from-exec.

然后附加到初始化阶段的属性插件将读取该config.properties文件并加载要用作构建的一部分的属性.

然后,作为示例,jar插件将使用该属性作为其配置的一部分(< finalName> ${jar.name}< / finalName>部分).

运行mvn clean包,您将在目标文件夹中找到from-exec.jar文件.

如果你不能得到一个让git描述为name = value模式的方法,你可以(最坏的情况)有两个Exec Maven Plugin执行,第一个写入文件的属性名和equals字符(即通过一个echo),第二个(git describe)将属性值附加到文件中.

标签:java,maven,pom-xml,maven-3,maven-jar-plugin
来源: https://codeday.me/bug/20190829/1761504.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有