为所有maven产品创建校验和

问题描述:

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

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

的问题是,这种解决方案似乎只是一个假象,而不是在我的生成所有的工件。我无法在构建时指定所有工件,我需要一个包含所有工件的解决方案。

附加信息:我使用Jenkins作为构建工具,所以如果有Jenkins解决方案,我也可以。尽管如此,我还没有找到一个人。

+0

有多少工件是相同的maven构建创建?这是一个多模块项目吗? –

+0

这是一个相当大的项目,创造了超过二打左右的文物。这个数量的工件可以在这里手动配置,但如果更多的工件被创建,我希望这些被自动包含。编辑:这是一个多模块项目 –

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

最后但并非最不重要的一点:如果Jenkins上的CI构建的一部分,你也可以考虑一个专门的配置文件,并在构建中激活它,但不作为默认构建的一部分。

+0

完美的作品,谢谢! –