IBM MobileFirst:在命令行构建期间使用外部 jar 文件
Posted
技术标签:
【中文标题】IBM MobileFirst:在命令行构建期间使用外部 jar 文件【英文标题】:IBM MobileFirst: using external jar files during command line build 【发布时间】:2015-01-23 14:50:26 【问题描述】:我们正在尝试使用 org.JSON.JSONObject 库在适配器端进行一些密集的 json 处理。我们有 Java 类来处理从 http 适配器接收到的数据。
mobilefirst 6.3.0 并使用 cli 20150701 构建
(最近的)。
从 eclipse mobilefirst 工作室环境构建时,此 JSON 引用没有问题。
我们正在 ubuntu linux 14.04 中构建这个环境。我们执行时引用org.JSON.JSONObject..x.jar
文件有错误
mfp start or mfp build or mfp deploy
有没有办法在 mfp 启动或 mfp 构建或 mfp 部署期间引用此 jar 文件作为类路径。
我们需要类似的东西
mfp -classpath "path/to/json.jar" build
请帮忙。
【问题讨论】:
不太明白。 jar 是在构建和部署后由您的应用程序使用还是由构建/部署过程中的某个自定义步骤使用? 你在哪里使用/引用这个 jar 在应用程序 (android) 或适配器中? 它在适配器端。 @djna 这是在适配器端运行时使用的。我们编写的 java 类使用它来处理来自适配器的 JSON 输出。 看看这个方法是否适合你:***.com/questions/25093518/… 【参考方案1】:事实证明,CLI 还不能识别放置在项目的 server/lib 文件夹中的 jars。为了完成这项工作,您可以对以下文件进行简单的编辑:
[cli 安装文件夹]/mobilefirst-cli/node_modules/generator-worklight-server/lib/build.xml
在第 123 行左右,添加如下所示的第三个文件集元素:
<!-- Classpath for server runtime libraries used when building the WAR -->
<path id="server-classpath">
<fileset dir="$worklight.jars.dir" includes="worklight-jee-library.jar" />
<fileset dir="$worklight.server.install.dir/wlp/dev" includes="**/*.jar" />
<!-- add server/lib folder to classpath -->
<fileset dir="$worklight.app.dir/../server/lib" includes="**/*.jar" />
</path>
之后,运行“mfp start”(如果您的服务器已经在运行,则运行“mfp restart”)将使用您添加到类路径中包含的 server/lib 文件夹的任何 jar 来编译您的自定义 Java 代码。
【讨论】:
感谢您的回复,但是您认为我在下面发布的解决方案是否可行?任何cmets?【参考方案2】:适配器使用的 JAR 应添加到文件夹 lib 中的项目服务器目录中。在构建项目时(在 Studio 中或通过 ant 任务),它们将包含在您的 Projects WAR 文件中,并且当您部署该 WAR 时,它将对您的适配器可见。
【讨论】:
确实做到了这一点,但情况是我们必须再次在 ubuntu 服务器中构建和部署。那么它就无法选择这个 JAR。【参考方案3】:我同意@bjustin_ibm。感谢那。虽然上述方法有效,但还有另一种方法可以做到这一点。
另类破解
只需将所需的 .jars 添加到以下位置,它会在 mfp 启动期间添加到类路径中
/home/instanceubuntu/.ibm/mobilefirst/6.3.0/server/wlp/dev/spi/third-party
这个解决方案更简单,实际上不需要维护 build.xml 文件。
希望这会有所帮助。
【讨论】:
是的,这将起作用,因为 'wlp/dev/' 文件夹已经在类路径中。但是,这种方法有一些缺点。 1. 这将影响部署到此服务器的每个项目。如果您只有一个项目,这实际上不会成为问题。 2. 我们通常认为 ~/.ibm 下的 mobilefirst 服务器内容有些短暂。在某些情况下会导致这些文件被 CLI 删除或覆盖 - 这意味着您可能在使用 CLI 的正常过程中丢失其中的更改,此时此 hack 可能会停止工作。 如果你能建议的话,那些不利的一面是什么? 抱歉,我的评论在我完成输入之前就提交了;)我已经更新了原始评论,说明了使用这种方法的具体缺点。 @bjustin_ibm 这很有意义。再次感谢您的分享。美好的一天:)以上是关于IBM MobileFirst:在命令行构建期间使用外部 jar 文件的主要内容,如果未能解决你的问题,请参考以下文章
在 Xcode 中运行时,IBM MobileFirst 7.1 混合应用程序构建失败
无法构建 IBM MobileFirst Platform 7.0 java 适配器
使用 Ant builder 构建 IBM MobileFirst 项目(用于本机代码生成)
我的基于 IBM MobileFirst Platform 7.1 CLI 的服务器存在一些问题;我怎样才能轻松地重新创建它?