是否可以将Liferay SDK放在与源代码不同的位置?

时间:2012-08-30 11:19:24

标签: liferay

我想问一下使用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和代码,这对我来说听起来不对。

感谢您的帮助!

3 个答案:

答案 0 :(得分:2)

我认为,当您的portlet项目位于Liferay Plugins SDK目录中时,最佳做法仍然是。这样,您就可以利用Eclipse的Liferay IDE插件的所有优势。因为据我所知,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" />

希望你能得到这个想法。 :)但在做这样的事情之前要三思而行。

答案 1 :(得分:1)

Liferay插件是在Liferay插件SDK内部开发的,其名称为 SDK ,原因非常充分。

我没有发现插件-SDK和绑定到收集的代码有什么问题,下面是几个原因:

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

因此,如果你想开发liferay插件(有或没有IDE),最好的做法(我认为唯一有效的方式)就是在插件SDK的各个文件夹中创建项目portlets文件夹中的portlet项目,hooks文件夹内的钩子项目等。

如果在此IDE中创建插件项目(Liferay项目)时使用了Liferay IDE,则指定SDK和服务器运行时及其作用是在Plugins SDK中创建项目并复制{ {1}},.settings&amp;创建项目内的.classpath文件。它不会像eclipse通常对其他项目那样在工作区内创建项目。

希望我能够清楚地解释清楚,这就是你想要的。

答案 2 :(得分:0)

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

正如普拉卡什所说,做到这一点并不是很糟糕。除了他的答案,您不需要在工作区目录中包含您的代码。 Eclipse非常乐意将它放在文件系统的任何位置 - 因此,当您使用Eclipse时,您甚至不关心代码的确切位置(当您将其检入版本控制时 - 对吗? - 您实际上从不需要关心。

如果您想使用Liferay的OOTB蚂蚁脚本:它们完全适合您描述的设置:在SDK目录中工作。它实际上并不坏,但如果你不喜欢它,你只需要接受你不能使用build.xml而不改变它(就像Artem建议的那样)。

另一个选择是使用maven - 这也绕过了sdk(和Liferay IDE集成),所以你可以再次自由地放置你喜欢的源代码,然后让maven完成剩下的工作。

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

当然,你错过了这个解决方案是包括build的整齐处理。$ {username} .properties - 你必须拥有自己的build.properties来定义$ {liferay.sdk.home}。如果你不是在团队中工作,那没关系。否则你必须自己发明(并编码)或依赖全局参数来配置每个团队成员。