我有一组从常见的maven项目继承的相关项目。 由于它们仍处于alpha版本,因此它们(包括父级)都部署在Sonatype快照存储库中,而不是Maven central。
访问maven中心的配置位于我的应用程序的父项目中。 所以它的POM指定为其父级:
...
<parent>
<groupId>org.sonatype.oss</groupId>
<artifactId>oss-parent</artifactId>
<version>7</version>
</parent>
...
并在Sonatype中设置相应的存储库:
...
<repositories>
<repository>
<id>snapshots-repo</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
...
因此子项目不必重复此配置。 父母还提供了我所有项目共有的许多其他内容。 目前,我将所有这些项目保存在不相关的目录中。
现在,如果我的应用程序的用户签出我的某个项目并尝试使用mvn install
进行安装,则会收到错误:Non-resolvable parent POM: Could not find artifact ...
这对我来说很有意义,因为项目无法访问Sonatype存储库(例如,用于下载父级),因为它恰好是包含如何连接到此类存储库的父级。
我不想要求用户首先安装父项目,因为他应该只需一步即可安装他需要的东西。
那么分发我的库的推荐方法是什么,以便用户可以用一个命令安装它们中的任何一个?
我发现我可以在每个项目中包含父POM(例如,使用git子模块),因此可以在本地解析父项。但我想知道这是否是组织这个(?)的最佳方式。任何更好的选择都值得赞赏。
更新
我将此添加到〜/ .m2 / settings.xml中,因此可以在Sonatype快照存储库中解析父POM。显然它工作正常,父POM被解析为任何其他依赖。
<profiles>
<profile>
<id>allow-snapshots</id>
<activation><activeByDefault>true</activeByDefault></activation>
<repositories>
<repository>
<id>snapshots-repo</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<releases><enabled>false</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
</profile>
</profiles>
答案 0 :(得分:0)
如果您希望将其保持一步安装,则必须在项目pom中列出足够的信息,即:
存储库管理器仅帮助有权访问它的人。如果用户在一个组织中,那就没问题。使用sonatype存储库可以实现更广泛的循环。