Maven将“发行说明”部署为工件

要求 :将附加文件(文本格式版本注释文件)与jar / war一起上传(部署)到nexus。

可能的解决方案 :使用maven deploy plugin如下:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-deploy-plugin</artifactId>
            <executions>
                <execution>
                    <phase>deploy</phase>
                    <goals>
                        <goal>deploy-file</goal>
                    </goals>
                    <configuration>
                        <packaging>RELEASENOTE.MD</packaging>
                        <generatePom>false</generatePom>
                        <url>${project.distributionManagement.repository.url}</url>
                        <artifactId>${project.artifactId}</artifactId>
                        <groupId>${project.groupId}</groupId>
                        <version>${project.version}</version>
                        <file>RELEASENOTE.MD</file>
                    </configuration>
                </execution>
            </executions>
        </plugin>

问题

  • RELEASENOTE.MD文件是可选的。 只有在文件存在的情况下才应该部署该文件。 如果文件不存在,上述解决方案将引发错误。
  • [错误]无法执行目标org.apache.maven.plugins:maven-deploy-plugin:2.4:部署文件(默认)在项目上... RELEASENOTE.MD找不到。

  • 需要一个选项来指定正则表达式的文件名(例如: *RELEASENOTE.MD )。 maven deploy plugin不接受正则表达式。
  • [错误]未能执行目标org.apache.maven.plugins:maven-deploy-plugin:2.4:部署文件(默认)在项目上... * RELEASENOTE.MD找不到。

    这两个问题如何避免?


    将发行说明的部署移至其自己的maven配置文件,并且仅在发行说明文件存在时才激活该配置文件。

    <profiles>
      <profile>
        <activation>
          <file>
            <exists>RELEASENOTE.MD</exists>
          </file>
        </activation>
        <!-- deployment of release notes declarations here -->
      </profile>
    </profiles>
    

    有关更多信息,请参阅构建配置文件简介

    关于正则表达式的要求,您应该为发行说明设置一个命名策略,并将其实现为可由maven构建访问的变量。 构建助手maven插件可能在那里使用。


    结合来自@SpaceTrucker@khmarbaise的输入,提出了以下解决方案:

    <profiles>
        <profile>
            <id>add-release-note</id>
            <activation>
                <file><exists>RELEASENOTE.MD</exists></file>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>build-helper-maven-plugin</artifactId>
                        <version>3.0.0</version>
                        <executions>
                            <execution>
                                <id>attach-artifacts</id>
                                <phase>package</phase>
                                <goals>
                                    <goal>attach-artifact</goal>
                                </goals>
                                <configuration>
                                    <artifacts>
                                        <artifact>
                                            <file>RELEASENOTE.MD</file>
                                            <type>MD</type>
                                            <classifier>RELEASENOTE</classifier>
                                        </artifact>
                                    </artifacts>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
    

    编辑

  • 配置文件激活中的maven-deploy-plugin可以工作。 但是,由于它的<url>标记,它会对发布/快照构建参数化造成困难。 build-helper-maven-plugin是一个更简单的解决方案

  • 文件名正则表达式可以通过包装器外壳构建脚本来处理

  • 链接地址: http://www.djcxy.com/p/79981.html

    上一篇: Maven deploy "Release Note" as artifact

    下一篇: Maven deploy when testing