maven - 为所有 Maven Artifact 创建校验和

标签 maven jenkins maven-jar-plugin maven-install-plugin

我正在尝试为当前 Maven 构建中的所有 Artifact 创建 SHA-1 校验和,并将这些校验和写入文件。目前我正在考虑使用 maven-install-plugin,它有一个内置的校验和生成器。

https://maven.apache.org/plugins/maven-install-plugin/examples/installing-checksums.html

问题是该解决方案似乎仅适用于一个 Artifact ,而不是我的构建中的所有 Artifact 。我也无法在构建时指定所有 Artifact ,我需要一个包含所有 Artifact 的解决方案。

其他信息:我使用 Jenkins 作为构建工具,因此如果有 Jenkins 解决方案,我也可以接受。不过我自己还没有找到。

最佳答案

您可以使用Checksum Maven Plugin及其 artifacts目标。

我刚刚测试了以下示例 POM:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.6</version>
            <executions>
                <execution>
                    <id>create-jar-something</id>
                    <phase>package</phase>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                    <configuration>
                        <classifier>something</classifier>
                    </configuration>
                </execution>
                <execution>
                    <id>create-jar-else</id>
                    <phase>package</phase>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                    <configuration>
                        <classifier>else</classifier>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>net.ju-n.maven.plugins</groupId>
            <artifactId>checksum-maven-plugin</artifactId>
            <version>1.2</version>
            <executions>
                <execution>
                    <goals>
                        <goal>artifacts</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

注意:我正在从该项目创建三个 Artifact :默认的一个和两个带有分类器的附加 jar。
由于 artifacts 目标的简单且单次执行,我在构建过程中获得了以下内容 (mvn clean verify):

enter image description here

通过附加的 individualFiles 配置条目,您还可以决定是将校验和存储在单独的文件中(默认)还是附加在一个文件中,同时通过 individualFilesOutputDirectory如果需要,您可以将其创建重定向到另一个位置。

因此,这种方法可以满足您的需求,因为它会自动检测任何生成的 Artifact 并计算其校验和。

另请注意,在多模块项目中 as per documentation :

Is NOT inherited by default in multi-project builds.

在这种情况下,您可以将上面的代码片段放在父/聚合器 pom 的 pluginManagement 部分中,然后在子模块中重新声明插件(但不是其执行或其版本),其中您想要激活该行为。

因此,在您的父/聚合器中,您可以有类似的内容:

<pluginManagement>
    <plugins>
        <plugin>
            <groupId>net.ju-n.maven.plugins</groupId>
            <artifactId>checksum-maven-plugin</artifactId>
            <version>1.2</version>
            <executions>
                <execution>
                    <goals>
                        <goal>artifacts</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
            </configuration>
        </plugin>
    </plugins>
</pluginManagement>

并且在您想要启用此行为的模块中,您只需指定:

<build>
    <plugins>
        <plugin>
            <groupId>net.ju-n.maven.plugins</groupId>
            <artifactId>checksum-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>
<小时/>

最后但并非最不重要的一点:如果 CI 的一部分构建在 Jenkins 上,您还可以考虑针对此行为的专用配置文件并在构建时激活它,但不作为默认构建的一部分。

关于maven - 为所有 Maven Artifact 创建校验和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34935297/

相关文章:

java - MANIFEST.MF 中的条目顺序

java - 如何使用 maven-jar-plugin 和 groovy 构建可执行 jar?

maven - 我可以将快照的时间戳更改为内部版本号吗?

maven - IntelliJ + 执行 Maven 目标 : How to delete from recent?

ios - Jenkins IOS 构建和 Git 分支

java - Netbeans和Maven,如何阻止maven尝试下载?

docker - 如何修复 Jenkins 管道中的 "process apparently never started in ..."错误?

jenkins - 在Jenkins Declarative Pipeline中,如何评估特定目录是否更改

java - 如何从源代码中获取maven依赖信息?

java - 在 jar 文件中设置 java.library.path