我正在编写一个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是仅部署的 工件?
答案 0 :(得分:0)
深入研究maven的源代码,尤其是DefaultProjectInstaller
使用的maven-install-plugin
,看来这是当前不可能的。
Maven允许pom文件本身作为工件的唯一方法是,如果项目本身的包装为pom
。即使artifact
包装是pom
,它也会尝试再次添加(因此出现了我上面的错误)。
所以对我来说,唯一的解决方法似乎是添加另一个(可能为空)文件作为我的工件,然后让它推送该文件。