Liferay 未解决的需求
Liferay unresolved requirment
我需要在另一个 Java 项目的 liferay 模块项目中使用一些 类。我正在使用 gradle,当我部署我的应用程序时,即使 gradle 编译了我的 jar 文件,我也会收到未解决的需求错误。
这是我到目前为止所做的,我的 gradle.build:
compile files('libs/p01-jdbc.jar')
compileOnly group: "org.mql.biblio.dao.jdbc", name: "p01-jdbc", version: "default"
我的 bnd 文件:
Bundle-Name: Inter_Portlet_Communication
Bundle-SymbolicName: Inter_Portlet_Communication
Bundle-Version: 1.0.0
Export-Package: \
com.mql.ipc.constants
Include-Resource: @p01-jdbc.jar
还有我的进口商品
import org.mql.biblio.dao.jdbc.DataBase;
import org.mql.biblio.dao.jdbc.DataSource;
import org.mql.biblio.dao.jdbc.MySQLDataSource;
P.S: 我正在编译的 jar 也使用本地 mysql.jar(在名为 lib 的文件夹中)。
找到了问题的答案,我不得不使用 compileInclude 而不是编译。我还需要为依赖项 jar 所需的另一个 jar 添加一行:
compileInclude files('libs/p01-jdbc.jar')
compileInclude files('libs/mysql.jar') //This jar is used by the first one
在 "it works" 之前,你不应该盲目地 compileInclude
一切。检查 this article 您所做的事情 - 更可取的方式 也将依赖项部署到 OSGi 容器 - 如果它们也是 OSGi 包。或者,也将它们制作成 OSGi 包。
如果 p01-jdbc.jar 已经是一个 OSGi 包:将它部署到 Liferay。如果它是一个自定义库而不是一个 OSGi 包,我宁愿把它做成一个,然后见上文。
在数据库驱动的情况下,这可能会在稍后击中你,因为 mysql 驱动通常也是全局部署的,你可能会击中无法替代的模棱两可的 类对于彼此,或者在不同版本中相同 类,通过不同的类加载器。
我需要在另一个 Java 项目的 liferay 模块项目中使用一些 类。我正在使用 gradle,当我部署我的应用程序时,即使 gradle 编译了我的 jar 文件,我也会收到未解决的需求错误。
这是我到目前为止所做的,我的 gradle.build:
compile files('libs/p01-jdbc.jar')
compileOnly group: "org.mql.biblio.dao.jdbc", name: "p01-jdbc", version: "default"
我的 bnd 文件:
Bundle-Name: Inter_Portlet_Communication
Bundle-SymbolicName: Inter_Portlet_Communication
Bundle-Version: 1.0.0
Export-Package: \
com.mql.ipc.constants
Include-Resource: @p01-jdbc.jar
还有我的进口商品
import org.mql.biblio.dao.jdbc.DataBase;
import org.mql.biblio.dao.jdbc.DataSource;
import org.mql.biblio.dao.jdbc.MySQLDataSource;
P.S: 我正在编译的 jar 也使用本地 mysql.jar(在名为 lib 的文件夹中)。
找到了问题的答案,我不得不使用 compileInclude 而不是编译。我还需要为依赖项 jar 所需的另一个 jar 添加一行:
compileInclude files('libs/p01-jdbc.jar')
compileInclude files('libs/mysql.jar') //This jar is used by the first one
在 "it works" 之前,你不应该盲目地 compileInclude
一切。检查 this article 您所做的事情 - 更可取的方式 也将依赖项部署到 OSGi 容器 - 如果它们也是 OSGi 包。或者,也将它们制作成 OSGi 包。
如果 p01-jdbc.jar 已经是一个 OSGi 包:将它部署到 Liferay。如果它是一个自定义库而不是一个 OSGi 包,我宁愿把它做成一个,然后见上文。
在数据库驱动的情况下,这可能会在稍后击中你,因为 mysql 驱动通常也是全局部署的,你可能会击中无法替代的模棱两可的 类对于彼此,或者在不同版本中相同 类,通过不同的类加载器。