我有一个OSGi包,是由另一个团队使用Maven构建的.POM文件将其包装声明为"bundle"并使用Apache Felix插件.
我需要将此工件部署到本地Maven存储库(Nexus),以便我们的内部项目可以使用它.
我已经使用deploy:deploy-file
目标将bundle部署到存储库,就像使用标准JAR文件一样,这样可以正常工作.我从包中提取了嵌入的POM并在命令行上传递了它,因此命令行是:
mvn deploy:deploy-file -Dfile=3rdpartybundle.jar -DpomFile=pom.xml -DrepositoryId=internal -Durl=http://internalserver/nexus
Run Code Online (Sandbox Code Playgroud)
问题在于,当我像这样部署它时,打包被设置为bundle,因此存储库中工件的名称最终使用.bundle扩展名,而不是.jar扩展名.
现在,我们无法弄清楚如何将其声明为依赖项.如果我们这样声明:
<dependency>
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<type>bundle</type>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我们收到错误,指出无法解决依赖关系.有趣的是,错误消息中的GAV坐标实际上具有"jar"作为依赖类型的值,即使我们将其设置为"bundle".
如果我们将依赖项更改为:
<dependency>
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<type>jar</type>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我们得到完全相同的未解决的依赖性错误.
那么你应该如何将打包为捆绑的工件部署到Maven存储库,以便它可以用作另一个项目的编译时依赖?
谢谢
我们有一个多模块 Maven 项目,由一个父 POM 和 5 个或更多模块组成。
如果我们激活我们的自定义“自动部署”配置文件,每个模块都可以作为构建的一部分部署到正在运行的服务器,因为每个模块的部署方式/部署内容略有不同,因此在每个模块中明确定义了该配置文件。
但是,当从父 POM 构建时,如果我激活“自动部署”配置文件,Maven 将最终部署所有模块,这几乎从来不是我们需要做的(基于我们的开发流程等)。但是我们确实希望从根构建,因为多个模块之间可能会发生变化,并且某些模块之间存在依赖关系。
当从父 POM 构建时,有没有办法只为一个模块而不是所有模块激活我们的自定义“自动部署”配置文件?
谢谢