为所有 Maven 工件创建校验和
Create a checksum for all maven artifacts
我正在尝试为我的 Maven 构建中当前的所有工件创建一个 SHA-1 校验和,并将这些校验和写入一个文件。目前我正在研究使用具有内置校验和生成器的 maven-install-plugin。
https://maven.apache.org/plugins/maven-install-plugin/examples/installing-checksums.html
问题是这个解决方案似乎只适用于一个工件,而不是我构建中的所有工件。我也不能在构建时指定所有工件,我需要一个包含所有工件的解决方案。
其他信息:我将 Jenkins 用作构建工具,因此如果有 Jenkins 解决方案,我也可以接受。我自己还没有找到一个。
您可以使用 Checksum Maven Plugin and its 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
配置条目您可以如果需要,将他们的创作重定向到另一个位置。
因此,这种方法可以满足您的需要,因为它会自动检测任何生成的工件并为其计算校验和。
另请注意 multi-modules 项目 as per documentation:
Is NOT inherited by default in multi-project builds.
在这种情况下,您可以将上面的代码片段放在 parent/aggregator pom 的 pluginManagement
部分,而只是 re-declare 插件(但不是它的执行或它的版本)在您要激活行为的子模块。
因此,在您的 parent/aggregator 中,您可以有类似的内容:
<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 构建中当前的所有工件创建一个 SHA-1 校验和,并将这些校验和写入一个文件。目前我正在研究使用具有内置校验和生成器的 maven-install-plugin。
https://maven.apache.org/plugins/maven-install-plugin/examples/installing-checksums.html
问题是这个解决方案似乎只适用于一个工件,而不是我构建中的所有工件。我也不能在构建时指定所有工件,我需要一个包含所有工件的解决方案。
其他信息:我将 Jenkins 用作构建工具,因此如果有 Jenkins 解决方案,我也可以接受。我自己还没有找到一个。
您可以使用 Checksum Maven Plugin and its 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
配置条目您可以如果需要,将他们的创作重定向到另一个位置。
因此,这种方法可以满足您的需要,因为它会自动检测任何生成的工件并为其计算校验和。
另请注意 multi-modules 项目 as per documentation:
Is NOT inherited by default in multi-project builds.
在这种情况下,您可以将上面的代码片段放在 parent/aggregator pom 的 pluginManagement
部分,而只是 re-declare 插件(但不是它的执行或它的版本)在您要激活行为的子模块。
因此,在您的 parent/aggregator 中,您可以有类似的内容:
<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 上,您还可以考虑为此行为创建一个专用配置文件并在构建时激活它,但不作为默认构建的一部分。