要求:将一个附加文件(文本格式发行说明文件)连同jar / war一起上载(部署)到联系。

可能的解决方案:如下使用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:deploy-file(默认)
  在项目上... \ RELEASENOTE.MD找不到。



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



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


如何解决这两个问题?

最佳答案

将发行说明的部署移动到其自己的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可能在这里有用。

10-07 13:12
查看更多