【问题标题】:Create a checksum for all maven artifacts为所有 Maven 工件创建校验和
【发布时间】:2016-01-21 22:08:47
【问题描述】:

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

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

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

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

【问题讨论】:

  • 同一个 Maven 构建创建了多少个工件?它是一个多模块项目吗?
  • 这是一个相当大的项目,创建了超过 2 打左右的工件。可以在其中手动配置该数量的工件,但如果要创建更多工件,我希望自动包含这些工件。编辑:这是一个多模块项目

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


【解决方案1】:

您可以使用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>

注意:我正在从这个项目中创建三个人工制品:默认的一个和两个带有分类器的附加 jar。
感谢artifacts目标的简单和单一执行,我得到了以下内容作为构建的一部分(mvn clean verify):

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

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

还要注意as per documentation的多模块项目:

在多项目构建中默认不继承。

在这种情况下,您可以将上面的 sn-p 放在父/聚合器 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>

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

【讨论】:

    猜你喜欢
    • 2022-10-18
    • 1970-01-01
    • 2017-07-01
    • 2021-10-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-06
    • 1970-01-01
    • 2017-02-21
    相关资源
    最近更新 更多