我正在尝试为当前在我的maven构建中的所有工件创建SHA-1校验和,并将这些校验和写入文件。目前我正在研究使用maven-install-plugin,它有一个内置的校验和生成器。
https://maven.apache.org/plugins/maven-install-plugin/examples/installing-checksums.html
问题是这个解决方案似乎只针对一个工件,而不是我构建中的所有工件。我也无法在构建时指定所有工件,我需要一个包含所有工件的解决方案。
其他信息:我使用Jenkins作为构建工具,所以如果有Jenkins解决方案,我也可以使用它。我自己也找不到一个。
答案 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
):
通过附加的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上,您还可以考虑针对此行为的专用配置文件,并在构建时激活它,但不作为默认构建的一部分。