• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

使用maven-bundle-plugin的错误Embed-Dependency

maven 来源:stevex 6次浏览

我有一个构建良好的Maven项目,我试图添加对twitter4j的引用。使用maven-bundle-plugin的错误Embed-Dependency

所以我将其添加到POM:

<dependency> 
     <groupId>org.twitter4j</groupId> 
     <artifactId>twitter4j-core</artifactId> 
     <version>[2.2,)</version> 
     <type>jar</type> 
     <optional>false</optional> 
     <scope>compile</scope> 
    </dependency> 

当我建(MVN全新安装),我得到:

[ERROR] Error building bundle net.stevex.tweetfetcher:tweetfetcher-bundle:bundle:1.0-SNAPSHOT : Unresolved references to [twitter4j] by class(es) on the Bundle-Classpath[Jar:dot]: [net/stevex/tweetfetcher/impl/TweetFetcherImpl.class] 

这是有道理的。该twitter4j包未嵌入捆绑。所以,我想补充一个嵌入的依赖于Maven的捆插件的说明:

<Embed-Dependency>*;scope=compile|runtime</Embed-Dependency> 

,现在当我建,我得到:

[ERROR] Error building bundle net.stevex.tweetfetcher:tweetfetcher-bundle:bundle:1.0-SNAPSHOT : Unresolved references to [dalvik.system, javax.crypto, javax.crypto.spec, javax.management, javax.management.openmbean, org.apache.commons.logging, org.apache.log4j, org.slf4j.impl, twitter4j.internal.http.alternative] by class(es) on the Bundle-Classpath[Jar:dot, Jar:twitter4j-core-2.2.3.jar]: [twitter4j/internal/logging/CommonsLoggingLogger.class, twitter4j/internal/logging/Log4JLoggerFactory.class, twitter4j/auth/OAuthToken.class, twitter4j/internal/http/HttpClientFactory.class, twitter4j/auth/OAuthAuthorization.class, twitter4j/internal/logging/Log4JLogger.class, twitter4j/conf/ConfigurationBase.class, twitter4j/TwitterAPIMonitor.class, twitter4j/internal/logging/CommonsLoggingLoggerFactory.class, twitter4j/management/APIStatisticsOpenMBean.class, twitter4j/internal/logging/Logger.class] 

我不明白为什么twitter4j类失踪,我不明白对dalvik.system,javax.crypto等的引用。这里有什么问题?

===========解决方案如下:

问题是twitter4j项目需要错误列表中列出的所有软件包。当你使用它时不包括所有的传递依赖。这里是行家束-插件的嵌入传递指令将嵌入所有传递依赖

<Embed-Dependency>*;scope=compile|runtime</Embed-Dependency> 
<Embed-Transitive>true</Embed-Transitive> 

然而,这种失败的OSGi的目的。这让您知道两个选项:

  1. 搜索SpringSource EBR中的第二个包。您只需在搜索框中输入包名称,结果将包括您的POM文件的xml。 SpringSource捆绑包将包含对EBR中其他捆绑包的引用,从而消除传递依赖关系的问题。

  2. 使用maven-bundle-plugin的bundle-all目标。这个目标将为您的项目的每个依赖项运行maven bundle插件,并将结果绑定到您的目标目录中。然后,您可以将这些软件包安装到本地存储库中。

我会推荐使用选项1作为许多捆绑软件,因为您可以找到,然后在SpringSource没有它们时默认选项2。


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)