我需要在我的代码中使用这两个包:
import org.apache.commons.validator.routines.DomainValidator;
import org.apache.commons.validator.routines.InetAddressValidator;
所以我需要抓住Apache commons-validator 1.4.0并将其作为捆绑包。
为此,我创建了一个新的maven项目,仅包含一个POM文件,其中POM包含以下内容:http://pastebin.com/qdbyuvhc
但是,当我编译这个项目时,生成的包清单将开始导入新的东西。在此处检查生成的MANIFEST.MF的Import-Package标记:http://pastebin.com/71LxAZ7Z
我希望它不会导入任何内容并且是自包含的。在使用OSGi时我讨厌这些东西,包括第三方依赖非常困难:(
如何使此捆绑包自包含?
答案 0 :(得分:2)
Commons验证器似乎已经是一个捆绑。 Check on maven central。 除此之外,还有一个commons validator bundle from servicemix。如果您在某些时候需要它,servicemix bundle source code可以帮助您自己进行包装。
答案 1 :(得分:1)
您唯一需要的是将此捆绑包作为maven依赖项添加到项目的pom文件中,这是依赖性片段(来自SpringSource Repo):
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>com.springsource.org.apache.commons.validator</artifactId>
<version>1.3.1</version>
</dependency>
此外,如果您拥有我们自己的Artifacts Repository,我建议您从here下载依赖jar,并将其添加到Artifacts Repository(例如Nexus或其他)。然后将SpringSource Enterprise Bundle Repository添加到Artifacts Repository Proxy Repositories。
快速常见问题解答
<强> 1。但我可以使用commons.validator 1.4.0吗?
不,你不能,apache.commons.validator的当前重新打包是版本1.3.1。
<强> 2。如果我真的想使用版本1.4.0,是否有解决方法?
也许吧!你可以尝试重新包装运气,这page似乎为你指明了实现这一目标的好方法。链接页面上的帖子似乎尝试使用http://www.eclipse.org/tycho/创建一个包裹 apache.commons.validator-1.4.0.jar 的包。
答案 2 :(得分:1)
您可以在结果清单中控制导入与否,只需将其添加到说明标记中:
<Import-Package>!DontWantThisPackage</Import-Package>
顺便说一下,一些公共验证器依赖关系已经捆绑了,所以不适合将它嵌入你的包中。
为了嵌入依赖项,我建议您直接在捆绑依赖项中添加它们(而不是使用传递依赖项)