Maven将“Release Note”部署为工件

时间:2017-06-27 07:11:05

标签: java maven deployment devops

要求:将附加文件(文本格式发布说明文件)以及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>

问题

  1. RELEASENOTE.MD文件是可选的。仅当文件存在时才应部署该文件。如果文件不存在,上述解决方案将引发错误。
  2.   

    [错误]无法执行目标   org.apache.maven.plugins:maven-deploy-plugin:2.4:deploy-file(默认)   在项目... \ RELEASENOTE.MD找不到。

    1. 需要一个选项来通过正则表达式指定文件名(例如:*RELEASENOTE.MD)。 maven deploy plugin不接受正则表达式。
    2.   

      [错误]无法执行目标   org.apache.maven.plugins:maven-deploy-plugin:2.4:deploy-file(默认)   在项目上... *找不到RELEASENOTE.MD。

      如何规避这两​​个问题?

2 个答案:

答案 0 :(得分:1)

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

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

有关详细信息,请参阅Introduction to Build Profiles

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

答案 1 :(得分:1)

结合来自 @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是一个更简单的解决方案

  • 可以通过包装程序shell构建脚本

  • 处理文件名正则表达式