5

我想请教您使用 Liferay SDK 进行开发的最佳实践。我已经下载了 SDK,我已经准备好 Eclipse,它可以工作,我可以创建新的 portlet 并运行本地 Liferay 实例来测试它。

这是我的情况——我拥有的所有源代码都在 Eclipse 工作区中,目前它只是我正在处理的 portlet。

Liferay SDK 我的位置与工作区完全不同。假设 ~/dev/liferay_sdk。Eclipse 工作区位于 ~/workspace。

起初,它不是那样工作的。Eclipse 由于某种原因无法找到或使用 Liferay SDK。当我将 Eclipse/Liferay 配置中的“项目验证”更改为“忽略”“Liferay 插件 SDK 无效”时,它开始正常工作。

例如,当需要构建 WAR 时,就会出现下一个问题。在工作区的 portlet 目录中存在“build.xml”文件。但是里面指的是另外一个xml文件,应该是上一个目录,这个指的是相对位置更多的东西,以此类推。

简而言之,它假定您在 Liferay SDK 中拥有 portlet 等。像“~/dev/liferay_sdk/portlets”。

我的问题是,我完全错了,还是你能建议我最好的做法?

我不想混合 SDK 和代码,这对我来说听起来不对。

感谢帮助!

4

3 回答 3

2

我认为,最佳实践仍然是您的 portlet 项目位于 Liferay Plugins SDK 目录中。这样,您就可以利用 Liferay IDE 插件的所有优势,例如 Eclipse。因为据我了解 Liferay IDE 不允许您在其他位置拥有 portlet 项目。从 Liferay SDK 目录中将项目导入 Eclipse 非常容易,这不是问题。

但是当我尝试将 portlet 项目保存到 Git 存储库时,我也遇到了同样的问题。带有符号链接的可能解决方案并非在每个系统上都能正常工作。因此,我稍微修改了 build.xml 文件,以便能够从任何目录运行 ant 任务。对于 portlet,它是这样的:

<project name="your-portlet" basedir="." default="deploy">
    <property file="build.properties" />

    <property name="project.dir" value="${liferay.sdk.home}" />

    <import file="${project.dir}/build-common-plugin.xml" />
</project>

请注意,您应该在 build.properties 中定义属性“liferay.sdk.home”,它应该是 Liferay 插件 SDK 的路径。

至于其他类型的 Liferay 插件(主题、钩子等),您应该导入另一个构建文件来构建该类型的插件。例如,对于主题,它将是:

<import file="${project.dir}/themes/build-common-theme.xml" />

希望你能明白这一点。:) 但是在做这样的事情之前要三思而后行。

于 2012-08-30T14:07:58.337 回答
1

Liferay 插件是在 Liferay Plugins SDK 中开发的,它被称为SDK是有充分理由的。

我没有发现 plugins-SDK 和捆绑在一起的代码有任何问题,以下是几个原因:

如果您在 github 上查看 liferay插件存储库,您会发现所有示例 portlet 和其他插件都存储在 plugins-SDK 内各自的文件夹中。

因此,如果您想开发 liferay 插件(有或没有 IDE),最佳实践(我认为唯一有效的方法)是在插件 SDK 的各个文件夹中创建项目,如文件夹内的 portlet 项目、portlets文件夹内的挂钩项目hooks等.

如果您在此 IDE 中创建插件项目(Liferay 项目)时使用了Liferay IDE,则您指定 SDK 和服务器运行时,它的作用是在插件 SDK 中创建项目并在创建的项目中复制.settings, .classpath&.project文件. 它不会像 eclipse 通常为其他项目所做的那样在您的工作区中创建项目。

希望我已经设法解释清楚,这就是你想要的。

于 2012-08-30T13:42:06.320 回答
0

我已经对其他答案感到非常满意,这可以通过评论分发,但是单独的答案提供了更多的结构化选项:

正如 Prakash 所说,这样做还不错。除了他的回答之外,您不需要将代码放在工作区目录中。Eclipse 很乐意将它放在文件系统中的任何位置 - 因此,当您使用 Eclipse 时,您甚至不关心您的代码到底在哪里(当您将它检查到版本控制中时 - 对吗? - 您实际上不需要关心。

如果您想使用 Liferay 的 OOTB ant 脚本:它们完全适合您描述的设置:在 SDK 目录中工作。这实际上还不错,但是如果您不喜欢它,您只需要接受如果不更改它就无法使用 build.xml(就像 Artem 建议的那样)。

另一种选择是使用 maven - 这也绕过了 sdk(和 Liferay IDE 集成),因此您可以再次自由地将源代码放在您喜欢的任何地方,让 maven 完成剩下的工作。

我可以想象 Artem 的建议有一些相当深奥和罕见的问题(比如当你暗示一些相对位置时引用自定义父主题)但我认为这是非常次要的,所以如果这对你有用:继续。请记住,您不满足 SDK 所做的基本假设,因此您可能必须更改违反假设的内容。如果你记住这一点,我无法想象这太难了。

当然,该解决方案缺少的是包含 build.${username}.properties 的简洁处理 - 您必须拥有自己的定义 ${liferay.sdk.home} 的 build.properties。如果你不是在一个团队中工作,那没关系。否则,您将不得不自己发明(并对其进行编码)或依赖全局参数来配置每个团队成员。

于 2012-08-30T17:56:23.613 回答