如何在 Liferay 中完全删除实体(在 JAR 文件中包含 class)

How to Remove Entity Completely in Liferay (include class in JAR file)

我正在使用 Liferay 6.2 GA5 社区版。

示例案例我的 service.xml 中有 2 个实体,假设实体 A 和 B。

当我 运行 Service Builder 然后它会在我的源代码中生成许多 JAVA 文件,并且还会生成位于

中的 JAR 文件
".\my-app\liferay-plugins-sdk-6.2\portlets\my-app-portlet\docroot\WEB-INF\lib\my-app-service.jar"

我用 7-zip 打开它,我可以看到包 com.mycompany.myapp.model 包含实体 A 和 B 的 类。

然后我尝试删除service.xml中的实体A,并且我已经删除了我的源代码中生成的相应JAVA文件,然后我再次运行 Service Builder,但是在里面my-app-service.jar,实体 A 仍然存在。

如何从 JAR 文件中完全删除它?因为在我的例子中,Service Builder 不会删除它,尽管我手动删除了生成的 JAVA 文件。

ServiceBuilder 是代码生成器,因此它只会生成 新代码。

如果你想摆脱曾经生成的代码,除了 java class 之外还有很多东西需要摆脱:Spring 配置、Hibernate 配置等.还有你需要照顾的吗?所有这些都必须手动删除。如果代码仍然保留在 jar 中,那么旧 ant clean(或您使用的任何构建环境)应该摆脱 my-app-service.jar 文件(否则您也可以手动删除它,以便在下次构建过程或 ServiceBuilder 运行时重建它)

我建议在你项目的 all 文件中搜索 A 的出现,看看你是否仍然找到剩余的,因为否则某些组件可能会在运行时抱怨声明的 class 找不到。