如何在pom插件中将pom设置为默认工件?

时间:2018-10-30 14:55:24

标签: maven maven-plugin

我正在编写一个Maven插件,不需要在项目中附加任何实际的构件(这是一个产品,无意依赖于此)。最终的工件(用于固件安装的tgz软件包)非常大,因此我不希望它在本地或我们的nexus存储库中无故占用空间-我们将其推送到其他服务中以进行检索来自运营中。

因此,我想告诉Maven,没有默认的工件,或者仅需要部署pom本身。在该插件中,我尝试将默认工件(MavenProject.setArtifact)设置为pom本身,但这会导致发行时出现问题,因为Maven尝试两次部署pom,我们将Nexus设置为不允许非快照版本。

如果我根本不setArtifact,我会得到:

The packaging for this project did not assign a file to the build artifact

我的项目正在使用具有自定义生命周期的插件,该插件在components.xml中定义。我试图将扩展名和打包设置为pom,但这没有帮助。

<component> ... <configuration> <extension>pom</extension> <packaging>pom</packaging> <addedToClasspath>false</addedToClasspath> <lifecycles> ... </configuration> </component>

是否有办法告诉Maven pom是仅部署的 工件?

1 个答案:

答案 0 :(得分:0)

深入研究maven的源代码,尤其是DefaultProjectInstaller使用的maven-install-plugin,看来这是当前不可能的。

Maven允许pom文件本身作为工件的唯一方法是,如果项目本身的包装为pom。即使artifact包装是pom,它也会尝试再次添加(因此出现了我上面的错误)。

所以对我来说,唯一的解决方法似乎是添加另一个(可能为空)文件作为我的工件,然后让它推送该文件。