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
是一个更简单的解决方案
文件名正则表达式可以通过包装器外壳构建脚本来处理