Ant:获取Java类名并写入属性文件



我想在bind工具的帮助下自动创建OSGi清单。为此,我需要创建一个属性。BND文件,包含以下两行:

Bundle-Activator=org.company.package.MyPluginActivator
Export-Package=org.mycompany.package #or possibly multiple packages here

我的自动化脚本需要找到一个实现BundleActivator接口的java类,在本例中是org.company.package.MyPluginActivator。以及它的包名,在本例中是org.company.package

理想情况下,我希望使用Ant自动执行此操作,但对任何其他不需要预先安装的轻量级和跨平台工具都很满意。

谢谢!

PS:我知道Ant属性和PropertyFile任务,但不知道如何获得所需java类的名称。

问题是,正如Neil指出的,可以有多个类实现BundleActivator。这是一种很好的方式,可以让你在6周后浪费几个小时去弄清楚为什么你的代码停止工作了…

无论如何,既然你似乎坚持搬起石头砸自己的脚,你也可以这样做:

Bundle-Activator: ${classes;implements;org.osgi.framework.BundleActivator}

这似乎比接受的答案容易得多,并且至少会在实际上有多个实现者时产生错误。

无论如何,导出包含激活器的包也犯了另一个大罪(在OSGi世界中)。OSGi保持东西私有的整个思想(你应该使用private - package)。

如果您的包中有多个BundleActivator实现怎么办?你真的喜欢一个工具来决定,基本上是随机的,哪一个将是你的包的主要入口点?

我觉得你错过了bond文件的要点,这是你对bundle内容的描述。也就是说,它是一个您应该写入的源文件。

还有,为什么要导出包含bundle激活器的包?

使用反射可以编写程序来获得实现所需接口的类名。

使用Ant java Task调用java程序。(我建议使用单独的JVM来运行此任务,您可以在提供的链接上找到设置)

在第一步中编写的程序也可以用于向属性文件写入值,因此不需要property Task。

相关内容

  • 没有找到相关文章

最新更新