【问题标题】:Liferay service-builder fails to generate good codeLiferay 服务构建器无法生成良好的代码
【发布时间】:2023-02-16 17:34:02
【问题描述】:

我正在使用 Intellij(带有 Liferay 插件)和 Gradle 插件设置 Liferay(Portal 7.4.3 ga55)开发环境。创建了一个新的 Liferay 工作区项目。接下来创建一个服务构建器模块并为 -service 模块执行 gradle buildService 任务。到目前为止,一切都很好。但是当我尝试为 -service 模块运行 gradle 构建任务时,我在 -service 模块中收到以下错误

1. FooModelImpl.java:toXmlString 方法不会覆盖或实现超类型的方法

  1. FooPersistenceImpl.java:接口 FinderCache 中的方法 getResult 不能应用于给定类型; 必需:FinderPath、Object[]、BasePersistence<?> 发现:FinderPath,对象[] 原因:实际和形式参数列表的长度不同

我做错了什么?

服务.xml

<?xml version="1.0"?>
<!DOCTYPE service-builder PUBLIC "-//Liferay//DTD Service Builder 7.4.0//EN" "http://www.liferay.com/dtd/liferay-service-builder_7_4_0.dtd">

<service-builder dependency-injector="ds" package-path="com.sample.core">
    <namespace>FOO</namespace>
    <entity local-service="true" name="Foo" remote-service="false" uuid="true">
        <column name="fooId" primary="true" type="long" />
        <column name="groupId" type="long" />
        <column name="companyId" type="long" />
        <column name="userId" type="long" />
        <column name="userName" type="String" />
        <column name="createDate" type="Date" />
        <column name="modifiedDate" type="Date" />
        <column name="field1" type="String" />
        <column name="field2" type="boolean" />
        <column name="field3" type="int" />
        <column name="field4" type="Date" />
        <column name="field5" type="String" />
        <order by="asc">
            <order-column name="field1" />
        </order>
    </entity>
</service-builder>

gradle.properties

liferay.workspace.modules.dir=modules
liferay.workspace.themes.dir=themes
liferay.workspace.wars.dir=modules
microsoft.translator.subscription.key= 
liferay.workspace.product=portal-7.4-ga55 
target.platform.index.sources = false 
liferay.workspace.bundle.url=https://releases-cdn.liferay.com/portal/7.4.3.55-ga55/liferay-ce-portal-tomcat-7.4.3.55-ga55-20221214100304403.tar.gz

我尝试在 gradle.properties 文件中更新 liferay.workspace.product & liferay.workspace.bundle.url 但没有成功

【问题讨论】:

  • 您的服务构建器代码看起来不错。我建议删除捆绑 URL,因为 liferay.workspace.product 应该处理该属性的设置。我建议您看一下 Liferay Workspace Gradle 插件。我有一个类似的问题,并通过更新 liferay 工作区插件得到解决。您可以尝试使用 blade 为您的产品生成一个新的工作空间,并比较工作空间的 settings.gradle 上的值。

标签: liferay-service-builder liferay-7.4


【解决方案1】:

目前,您必须像这样在服务模块中覆盖您的 build.gradle:

dependencies {
    compile project(":modules:foo:foo-api")

    compileOnly group: "com.liferay.portal", name: "release.dxp.api"
    
    serviceBuilder group: "com.liferay", name: "com.liferay.portal.tools.service.builder", version: "1.0.445"
    
}

buildService {
    apiDir = "../foo-api/src/main/java"
}

group = "com.liferay.samples.fbo.foo"

原因是这样的:https://issues.liferay.com/browse/LPS-166596

【讨论】:

  • 谢谢你给我指路。尽管此解决方案没有帮助。
【解决方案2】:

通过 LPS-166596 后,我用 4.0.22 版本更新了 settings.gradle 文件,它起到了魅力

classpath(group: "com.liferay", name: "com.liferay.gradle.plugins.workspace", version: "4.0.22")

【讨论】:

    猜你喜欢
    • 2016-12-29
    • 2016-06-04
    • 1970-01-01
    • 2014-03-08
    • 1970-01-01
    • 2017-06-16
    • 2016-05-17
    • 2015-12-30
    • 1970-01-01
    相关资源
    最近更新 更多