要求:将附加文件(文本格式发布说明文件)以及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:deploy-file(默认) 在项目... \ RELEASENOTE.MD找不到。
*RELEASENOTE.MD
)。 maven deploy plugin
不接受正则表达式。[错误]无法执行目标 org.apache.maven.plugins:maven-deploy-plugin:2.4:deploy-file(默认) 在项目上... *找不到RELEASENOTE.MD。
如何规避这两个问题?
答案 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构建脚本