【发布时间】:2011-11-16 10:07:48
【问题描述】:
我有一个由另一个团队使用 Maven 构建的 OSGi 包。 POM 文件将其打包声明为“bundle”并使用 Apache Felix 插件。
我需要将此工件部署到本地 Maven 存储库 (Nexus),以便我们的内部项目可以使用它。
我已使用deploy:deploy-file 目标将捆绑包部署到存储库,就像您使用标准 JAR 文件一样,这可以正常工作。我从包中提取了嵌入的 POM 并将其传递到命令行,所以命令行是:
mvn deploy:deploy-file -Dfile=3rdpartybundle.jar -DpomFile=pom.xml -DrepositoryId=internal -Durl=http://internalserver/nexus
问题是,当我这样部署它时,打包设置为捆绑,因此存储库中的工件名称以 .bundle 扩展名结束,而不是 .jar 扩展名。
现在,我们无法弄清楚如何将其声明为依赖项。如果我们这样声明:
<dependency>
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<type>bundle</type>
</dependency>
我们收到一条错误消息,指出无法解决依赖关系。有趣的是,错误消息中的 GAV 坐标实际上具有“jar”作为依赖类型的值,即使我们将其设置为“bundle”。
如果我们把依赖改成:
<dependency>
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<type>jar</type>
</dependency>
我们得到完全相同的未解决的依赖错误。
那么你应该如何将一个打包为一个包的工件部署到一个 Maven 存储库,以便它可以用作另一个项目的编译时依赖项?
谢谢
【问题讨论】:
-
我意识到我对“本地存储库”一词的使用可能令人困惑。我正在尝试部署到远程服务器上的 Nexus 存储库。该服务器由我们团队中的每个人共享。当我说“本地”时,我想我的意思是“在我们局域网上的防火墙内”。