Maven - 在jar中包含引用的库

时间:2013-01-08 11:59:00

标签: java maven-2 jar osgi

我有用于发送邮件的OSGi包,因此它使用 mail-1.4.jar 中的 com.sun.smtp 包。但OSGi服务无法访问此jar。

你能帮助我,如何配置Maven POM文件,所以 mail-1.4.jar 将包含在我的捆绑jar中,以便OSGi服务可以使用它吗?

修改

错误是:
javax.mail.NoSuchProviderException:无法找到协议的提供者:smtp

3 个答案:

答案 0 :(得分:2)

Yeasterday,我遇到了同样/类似的情况。请尝试以下方法:

将以下行添加到您的依赖关系列表中:

<dependency>
 <groupId>javax.mail</groupId>
 <artifactId>mail</artifactId>
 <version>1.4.1</version>
</dependency>

希望它有所帮助

答案 1 :(得分:2)

我建议不要在邮件包中包含邮件jar。更好的方法是在osgi运行时中简单地安装mail.jar。

你必须确保你有两件事可以做到这一点:

  1. 确保在自己的捆绑包的清单中导入所需的包。通常只使用带有默认值的maven bundle插件就可以了,但是你应该检查生成的Manifest
  2. 将mail.jar部署到OSGi运行时。如果您使用的是apache karaf,那么只需: mvn install -s mvn:javax.mail / mail / 1.4.4如果没有,那么下面的jar应该有帮助。它包含用于OSGi部署的正确Manifest文件http://search.maven.org/#artifactdetails|javax.mail|mail|1.4.4|jar

答案 2 :(得分:0)

尝试将此代码添加到您的pom.xml

<dependency>

   <groupId>javax.mail</groupId>
   <artifactId>mail</artifactId>
   <version>1.4</version>

</dependency>

或者

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-email</artifactId>
    <version>1.2</version>
</dependency>

这可能会对你有所帮助!