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 6.3 异步 API

我的基于 IBM MobileFirst Platform 7.1 CLI 的服务器存在一些问题;我怎样才能轻松地重新创建它?

如何在 IBM MobileFirst Platform Operations Console 中处理版本禁用