我正在尝试为当前 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
):
通过附加的 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/