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 文件的主要内容,如果未能解决你的问题,请参考以下文章