为所有maven工件创建校验和

时间:2016-01-21 22:08:47

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

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

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

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

其他信息:我使用Jenkins作为构建工具,所以如果有Jenkins解决方案,我也可以使用它。我自己也找不到一个。

1 个答案:

答案 0 :(得分: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>

注意:我正在从这个项目创建三个人工制品:默认的一个和两个带分类器的额外罐子。
感谢artifacts目标的简单单一执行,我将以下内容作为构建的一部分(mvn clean verify):

enter image description here

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

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

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

  

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

在这种情况下,您可以将上面的代码段放在父/聚合器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上,您还可以考虑针对此行为的专用配置文件,并在构建时激活它,但不作为默认构建的一部分。