了解Liferay模块提供的类的推荐方法

了解Liferay模块提供的类的推荐方法,liferay,osgi,osgi-bundle,liferay-7,Liferay,Osgi,Osgi Bundle,Liferay 7,在我的Liferay模块中,我想使用Liferay的SomeConvenientClass 推荐的方法是什么,以确定哪个模块提供该类课程? 这样我就可以快速地将它添加到我的build.gradle 理想情况下,它应该: 返回模块的组/名称/版本 或者确信该类在Liferay中不存在或未导出 到目前为止,我一直在反复尝试,从野外找到的build.gradle文件中复制/粘贴,但我正在寻找一种更可靠的方法。 我已经安装了Liferay,如果有帮助的话,还提供了与Liferay版本完全相同的源代码

在我的Liferay模块中,我想使用Liferay的
SomeConvenientClass

推荐的方法是什么,以确定哪个模块提供该类课程?
这样我就可以快速地将它添加到我的
build.gradle

理想情况下,它应该:

  • 返回模块的组/名称/版本
  • 或者确信该类在Liferay中不存在或未导出
到目前为止,我一直在反复尝试,从野外找到的
build.gradle
文件中复制/粘贴,但我正在寻找一种更可靠的方法。 我已经安装了Liferay,如果有帮助的话,还提供了与Liferay版本完全相同的源代码


我尝试了mvnrepository,但它似乎没有返回任何内容,例如:

我就是这样做的,它很慢而且手动,所以请毫不犹豫地推荐其他方法

  • 如果您还没有Liferay的源代码,请下载它
  • 运行
    find-命名为SomeConvenientClass.java
    。如果未找到任何内容,则可以确定该类不是Liferay的一部分
  • 在类的路径中,找到
    src
    文件夹级别,然后在该级别下,例如,如果它是
    modules/apps/collaboration/document library/document library web/src/main/java/com/liferay/document/library/web/portlet/action/DLViewMVCRenderCommand.java
    ,则转到
    modules/apps/collaboration/document library/document library-web/
  • 希望那里有一个
    bnd.bnd
    文件,打开它
  • 如果类的包不在导出包的
    部分,那么要么放弃(将Liferay的代码复制到您的模块中),要么使用一些。如果您认为应该导出该类,您可以在上解释您的案例,以供后代欣赏
    • 模块名称是
      Bundle SymbolicName
      的值
    • Version是
      捆绑版本
      的值
    • 这个组可能是
      com.liferay
      ,虽然有时是
      com.liferay.portal
      ,但不知道如何辨别
  • 建造。有时它会失败,因为Maven存储库缺少一个版本,例如1.0.11尽管被DXP fix pack 30使用,但仍然不可用。不知道在这种情况下该怎么办,除了选择一个“相似”的版本并希望最好的

  • 我就是这样做的,它是缓慢和手动的,所以不要犹豫,建议其他方法

  • 如果您还没有Liferay的源代码,请下载它
  • 运行
    find-命名为SomeConvenientClass.java
    。如果未找到任何内容,则可以确定该类不是Liferay的一部分
  • 在类的路径中,找到
    src
    文件夹级别,然后在该级别下,例如,如果它是
    modules/apps/collaboration/document library/document library web/src/main/java/com/liferay/document/library/web/portlet/action/DLViewMVCRenderCommand.java
    ,则转到
    modules/apps/collaboration/document library/document library-web/
  • 希望那里有一个
    bnd.bnd
    文件,打开它
  • 如果类的包不在导出包的
    部分,那么要么放弃(将Liferay的代码复制到您的模块中),要么使用一些。如果您认为应该导出该类,您可以在上解释您的案例,以供后代欣赏
    • 模块名称是
      Bundle SymbolicName
      的值
    • Version是
      捆绑版本
      的值
    • 这个组可能是
      com.liferay
      ,虽然有时是
      com.liferay.portal
      ,但不知道如何辨别
  • 建造。有时它会失败,因为Maven存储库缺少一个版本,例如1.0.11尽管被DXP fix pack 30使用,但仍然不可用。不知道在这种情况下该怎么办,除了选择一个“相似”的版本并希望最好的
  • 你试过了吗

    例如: 你试过了吗

    例如:

    这与其说是真的,不如说是一种选择,但我通常是这样做的:

    • 熟悉liferay和
      内部应用程序:api、服务、web
    • 熟悉liferay使用的束结构,如 使用资源文件夹,有时不太明显
    记住这一点,通常在github上导航就足够了:portal->(kernel/impl/services/apps)->app service/api/web

    但是这是一个自然的过程,当你在代码中度过一天的时候

    通常情况下,在线jar定位器会有所帮助,但我通常只依赖IDE

    在我的IDE上,在使用GogoShell和运行包提取依赖项之后,我已经对Spring依赖项管理进行了所有设置。使用Gogo,您将找不到类,但会列出模块和包。(顺便说一句,Gogo可能就是您想要的,因为它可以列出版本号)

    总之,如果您需要一个列表作为运行环境的图片,请使用Gogo

    关于主代码,不要相信它!说到模块化和捆绑包,Liferay的版本控制非常混乱(请阅读此处的依赖项管理问题:)

    对于步骤7,您需要选择一个api版本,并根据它编写代码。API更稳定。您可以对bnd文件施加兼容性限制,这将导致系统发出警告。在您的环境中,您可以更早地捕获api更改,比方说,当您使用新缓存构建时,或者如果您更改gradle解析策略以更频繁地下载依赖项,您可以要求gradle使用具有版本号但没有任何补丁的模块(使用“+”符号),如果构建中断,您将看到它


    有用的出发点:

    这更多的是一种选择,而不是一件真正的事情,但我通常是这样做的:

    • 熟悉所使用的包命名约定